Excel VBA質問箱 IV

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

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


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

【67394】該当月の月曜日と金曜日を表示する Yoshim 10/11/30(火) 20:59 質問[未読]
【67396】Re:該当月の月曜日と金曜日を表示する UO3 10/11/30(火) 21:42 回答[未読]
【67397】Re:該当月の月曜日と金曜日を表示する Hirofumi 10/11/30(火) 22:22 回答[未読]
【67398】Re:該当月の月曜日と金曜日を表示する Yoshim 10/11/30(火) 22:34 お礼[未読]

【67394】該当月の月曜日と金曜日を表示する
質問  Yoshim  - 10/11/30(火) 20:59 -

引用なし
パスワード
   当月の年月をA1に入れ

A3(月曜日用)とB3(金曜日)に該当する日にちをA列とB列に並べることをしたいのですが、日にちの処理で理解が進まず、ストップしました。この後のコードをどのようにすれば良いかアドバイスお願いします。

Sub 曜日取得と一覧()
Dim f As Long
Dim myY As Integer
Dim myM As Integer
Dim myD As String, myL
Dim LastDay As Integer, FistDay As Integer
myY = Year(Range("A1"))
myM = Month(Range("A1"))
myD = CStr(myY) & "/" & CStr(myM) & "/1"
FistDay = Day(DateAdd("d", 0, DateAdd("m", 1, myD)))
LastDay = Day(DateAdd("d", -1, DateAdd("m", 1, myD)))
myL = CStr(myY) & "/" & CStr(myM) & "/" & LastDay

MsgBox FistDay
MsgBox LastDay
'  For f = Str(myD) To Str(myL) '←…ここで止まります。

'  Next

End Sub

【67396】Re:該当月の月曜日と金曜日を表示する
回答  UO3  - 10/11/30(火) 21:42 -

引用なし
パスワード
   ▼Yoshim さん:

こんばんは

随分大胆な(?)というか、無茶なFor/Nextですね。
日付のFrom/Toでのループ(それもループ内で1日ずつアップ?)という器用なことは
できませんね。

オリジナルコード、ちょっと使い方で気になるところもありますが、できるだけいかして。

Sub Sample()
 Dim f As Long
 Dim myY As Integer
 Dim myM As Integer
 Dim myD As String
 Dim LastDay As Integer
 Dim TestDay As Date
 myY = Year(Range("A1"))
 myM = Month(Range("A1"))
 myD = CStr(myY) & "/" & CStr(myM) & "/1"
 LastDay = Day(DateAdd("d", -1, DateAdd("m", 1, myD)))
 For f = 1 To LastDay
  TestDay = DateSerial(myY, myM, f)
  'このTestDayの曜日をここで判定してください
 Next
End Sub

【67397】Re:該当月の月曜日と金曜日を表示する
回答  Hirofumi  - 10/11/30(火) 22:22 -

引用なし
パスワード
   こんなのでは

Option Explicit

Sub 曜日取得と一覧_2()

  Dim f As Long
  Dim myY As Variant
  Dim myD As Long
  Dim myL As Long
  
  Dim lngRowM As Long
  Dim lngRowF As Long
  
  myY = Range("A1").Value
  
  myD = DateSerial(Year(myY), Month(myY), 1)
  myL = DateSerial(Year(myY), Month(myY) + 1, 0)
  
  MsgBox Format(myD, "yyyy/m/d")
  MsgBox Format(myL, "yyyy/m/d")
  
  lngRowM = 3
  lngRowF = 3
  For f = myD To myL '←…ここで止まります。
    '月曜日なら
    If Weekday(f) = 2 Then
      Cells(lngRowM, "A").Value = Format(f, "yyyy/m/d")
      lngRowM = lngRowM + 1
    End If
    '金曜日なら
    If Weekday(f) = 6 Then
      Cells(lngRowF, "B").Value = Format(f, "yyyy/m/d")
      lngRowF = lngRowF + 1
    End If
  Next f

End Sub

【67398】Re:該当月の月曜日と金曜日を表示する
お礼  Yoshim  - 10/11/30(火) 22:34 -

引用なし
パスワード
   ▼UO3 さん Hirofumi さん:

早速ご指導ありがとうございます。

年月日関係の関数の知識が無く、困っていました。
よく分かりました。
お忙しいところ、ありがとうございました。

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