Excel VBA質問箱 IV

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

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


42784 / 76735 ←次へ | 前へ→

【39013】Re:第○○曜日をyyyy/mm/ddに書き換えたい
回答  Statis  - 06/6/16(金) 8:08 -

引用なし
パスワード
   こんにちは

簡単な説明を入れときました。


Sub Test()
Dim Myda As Date, cur_date As Date, cur_eddate As Date, lp As Long
Dim Co As Long, Co1 As Long, DaSt(4) As String, DaSt1(4) As Date
Dim DaSu(4) As String, DaSu1(4) As Date, C As Range, Ma, Ma1

Myda = Date
cur_date = DateSerial(Year(Myda), Month(Myda), 1) '現在の月の初日
cur_eddate = DateSerial(Year(Myda), Month(Myda) + 1, 0) '現在の月の最後
Co = 1: Co1 = 1
''現在の月の初日から'現在の月の最後日までループさせる
For lp = 0 To DateDiff("d", cur_date, cur_eddate)
  'Weekday関数にて曜日を区分(土曜、日曜のみ)
  Select Case Weekday(Format(DateAdd("d", lp, cur_date), "yyyy/m/d"))
      Case 7
      'その日が土曜なら配列変数に第何土曜日かをセット(変数Coにて1,2,3,4,5を決める)
      DaSt(Co) = "第" & Co & "土曜日"
      'その日を配列変数にセット
      DaSt1(Co) = Format(DateAdd("d", lp, cur_date), "yyyy/m/d")
      Co = Co + 1
      Case 1
      'その日が日曜なら配列変数に第何日曜日かをセット(変数Co1にて1,2,3,4,5を決める)
      DaSu(Co1) = "第" & Co1 & "日曜日"
      'その日を配列変数にセット
      DaSu1(Co1) = Format(DateAdd("d", lp, cur_date), "yyyy/m/d")
      Co1 = Co1 + 1
  End Select
Next
'ループにてデータ分回す
For Each C In Range("A1", Range("A65536").End(xlUp))
  'Match関数にて配列変数の値と一致するのがあるかを確認(土曜日分)
  Ma = Application.Match(C.Value, DaSt, 0)
  '一致したかの有無をIF文で確認
  If Not IsError(Ma) Then
    'あった場合セルへ日付を転記(土曜日分)
    C.Value = DaSt1(Ma - 1)
  Else
    '無かった場合、Match関数にて配列変数の値と一致するのがあるかを確認(日曜日分)
    Ma1 = Application.Match(C.Value, DaSu, 0)
    '一致したかの有無をIF文で確認
    If Not IsError(Ma1) Then
     'あった場合セルへ日付を転記(日曜日分)
     C.Value = DaSu1(Ma1 - 1)
    End If
  End If
Next
End Sub

>C.Value = DaSu1(Ma1 - 1)
なぜ、(Ma1-1)になるかと言うと変数「DaSu1」は
DaSu1(0),DaSu1(1),DaSu1(2),DaSu1(3),DaSu1(4)となり
各変数に値がセットされいます。
Match関数で一致した場合、変数Ma1には「1〜5」の値が返ってきます。
と言う事は、実際の値を転記するには「1=DaSu1(0)」となるため
「-1」する必要があるのです。

0 hits

【38998】第○○曜日をyyyy/mm/ddに書き換えたい green 06/6/15(木) 18:15 質問
【39002】Re:第○○曜日をyyyy/mm/ddに書き換えたい ハト 06/6/15(木) 19:06 回答
【39010】Re:第○○曜日をyyyy/mm/ddに書き換えたい green 06/6/15(木) 21:40 お礼
【39003】Re:第○○曜日をyyyy/mm/ddに書き換えたい Statis 06/6/15(木) 19:30 回答
【39009】Re:第○○曜日をyyyy/mm/ddに書き換えたい green 06/6/15(木) 21:38 質問
【39011】Re:第○○曜日をyyyy/mm/ddに書き換えたい green 06/6/15(木) 22:03 質問
【39013】Re:第○○曜日をyyyy/mm/ddに書き換えたい Statis 06/6/16(金) 8:08 回答
【39043】Re:第○○曜日をyyyy/mm/ddに書き換えたい green 06/6/16(金) 13:10 お礼
【39046】Re:第○○曜日をyyyy/mm/ddに書き換えたい Statis 06/6/16(金) 13:21 発言
【39016】Re:第○○曜日をyyyy/mm/ddに書き換えたい Jaka 06/6/16(金) 9:07 発言
【39045】Re:第○○曜日をyyyy/mm/ddに書き換えたい green 06/6/16(金) 13:11 お礼

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