|
ありがとうございます。
わかりやすいご指南助かります。
>とりあえず、今のコードでは Rangeの親シートの指定がないですよね?ws2.Cells(2, 4)
このws2の部分で指定しているつもりでしたが不十分だったということでしょうか…。
初歩的な話だったら大変申し訳ありません。
ws1とws2が入れ替わっているようだったので、
その辺を弄って、いただいた構文で試してみました。
この過程で気づいたのですが
ws2.Range("D3").Value にはworkday関数を使用しておりまして、
vbsで呼び出した場合はここが計算できておらず、
その結果「型が違う」とエラーが出ているようです(当り前ですね…)
workday関数を使用している理由は
今日の時間外から翌営業日の朝9時までに当てはまるものを拾いたいからなんですが
workday関数を使わずにマクロだけで処理するしかないでしょうか…
Public Sub Before2()
Dim ws0 As String
Dim ws1 As Worksheet, ws2 As Worksheet
Dim i As Long, k As Long
Dim date1 As Date
Dim date2 As Date 'Double
ws0 = Format$(Date, "yyyyMM")
Set ws1 = ThisWorkbook.Worksheets(ws0)
Set ws2 = ThisWorkbook.Worksheets("日付")
date1 = ws2.Range("D2").Value
date2 = ws2.Range("D3").Value
Dim c As Range
For Each c In ws1.Range("A1", ws1.Cells(ws1.Rows.Count, 1).End(xlUp))
Select Case c.Value
Case date1 To date2
MsgBox c.Value
End Select
Next
End Sub
|
|