Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


5923 / 13645 ツリー ←次へ | 前へ→

【48143】年、月、曜日から該当する日を表示 ピンキー 07/4/5(木) 2:53 質問[未読]
【48146】Re:年、月、曜日から該当する日を表示 ichinose 07/4/5(木) 7:50 発言[未読]
【48168】Re:年、月、曜日から該当する日を表示 訂正 ichinose 07/4/5(木) 20:26 発言[未読]
【48153】Re:年、月、曜日から該当する日を表示 Kein 07/4/5(木) 13:44 回答[未読]
【48193】Re:年、月、曜日から該当する日を表示 ピンキー 07/4/7(土) 21:14 お礼[未読]

【48143】年、月、曜日から該当する日を表示
質問  ピンキー  - 07/4/5(木) 2:53 -

引用なし
パスワード
   セルA1に西暦を、A2に月、A3に曜日をそれぞれ入力すると、該当する日をA4以下に日数分表示させるようにしたいのですが・・・


A1 2007
A2    4
A3    木

と、入力して、イベントはなんでもいいです。上記のように、2007年4月の木曜日だと、該当する日は5日、12日、19日、26日と4日あるので、

A4    5
A5   12
A6   19
A7   26

と、なるようにしたいのです。方法があれば教えてください。

【48146】Re:年、月、曜日から該当する日を表示
発言  ichinose  - 07/4/5(木) 7:50 -

引用なし
パスワード
   ▼ピンキー さん:
おはようございます。

>セルA1に西暦を、A2に月、A3に曜日をそれぞれ入力すると、該当する日をA4以下に日数分表示させるようにしたいのですが・・・
>
>例
>A1 2007
>A2    4
>A3    木
>
>と、入力して、イベントはなんでもいいです。上記のように、2007年4月の木曜日だと、該当する日は5日、12日、19日、26日と4日あるので、
>
>A4    5
>A5   12
>A6   19
>A7   26

一ヶ月の日付を全部調べたってたいしたことありませんが・・・、

Sub main()
  Dim rw As Long
  Dim std As Date
  Dim edd As Date
  Dim warray As Variant
  warray = Array("日", "月", "火", "水", "木", "金", "土")
  std = DateSerial([a1].Value, [a2].Value, 1) + _
     Weekday(Application.Match([a3].Value, warray, 0), _
     Weekday(std)) - 1
  edd = DateSerial([a1].Value, [a2].Value + 1, 0)
  rw = 4
  Do Until std > edd
   Cells(rw, 1).Value = Day(std)
   rw = rw + 1
   std = std + 7
   Loop
End Sub

上記のシートをアクティブにした状態で実行してみてください

【48153】Re:年、月、曜日から該当する日を表示
回答  Kein  - 07/4/5(木) 13:44 -

引用なし
パスワード
   作業列とオートフィルターを使うコードです。エラーへの対処はしていません。

Sub Get_WDay()
  Dim SDy As Date, EDy As Date
  Dim MyR As Range
  Dim Wdy As String
 
  SDy = DateSerial(Range("A1").Value, Range("A2").Value, 1)
  EDy = DateAdd("m", 1, SDy)
  Wdy = Range("A3").Text
  Range("A4:A10").Clear
  Range("IV1").Value = "曜日"
  With Range("IU2")
   .Value = SDy
   .AutoFill .Resize(EDy - SDy), xlFillDays
   Set MyR = Range(.Cells(1), .End(xlDown))
  End With
  MyR.Offset(, 1).Formula = "=TEXT($IU1,""aaa"")"
  Range("IV1", Range("IV65536").End(xlUp)).AutoFilter 1, Wdy
  MyR.SpecialCells(12).Copy Range("A4")
  ActiveSheet.AutoFilterMode = False
  Range("IU:IV").Clear: Set MyR = Nothing
End Sub

【48168】Re:年、月、曜日から該当する日を表示 訂...
発言  ichinose  - 07/4/5(木) 20:26 -

引用なし
パスワード
   訂正です

>>セルA1に西暦を、A2に月、A3に曜日をそれぞれ入力すると、該当する日をA4以下に日数分表示させるようにしたいのですが・・・
>>
>>例
>>A1 2007
>>A2    4
>>A3    木
>>
>>と、入力して、イベントはなんでもいいです。上記のように、2007年4月の木曜日だと、該当する日は5日、12日、19日、26日と4日あるので、
>>
>>A4    5
>>A5   12
>>A6   19
>>A7   26
>
>一ヶ月の日付を全部調べたってたいしたことありませんが・・・、
>
>Sub main()
>  Dim rw As Long
>  Dim std As Date
>  Dim edd As Date
>  Dim warray As Variant
>  warray = Array("日", "月", "火", "水", "木", "金", "土")
   std = DateSerial([a1].Value, [a2].Value, 1)
   std = std + _
     Weekday(Application.Match([a3].Value, warray, 0), _
     Weekday(std)) - 1
>  edd = DateSerial([a1].Value, [a2].Value + 1, 0)
>  rw = 4
>  Do Until std > edd
>   Cells(rw, 1).Value = Day(std)
>   rw = rw + 1
>   std = std + 7
>   Loop
>End Sub

【48193】Re:年、月、曜日から該当する日を表示
お礼  ピンキー  - 07/4/7(土) 21:14 -

引用なし
パスワード
   お二方、返事ありがとうございました。

5923 / 13645 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free