|
▼さくら さん:
>この過程で気づいたのですが
>ws2.Range("D3").Value にはworkday関数を使用しておりまして、
>vbsで呼び出した場合はここが計算できておらず、
>その結果「型が違う」とエラーが出ているようです(当り前ですね…)
さくらさん、こちら「???」です。。
>workday関数を使わずにマクロだけで処理するしかないでしょうか…
VBSからでなく、Excelを起動してそのBookを開いて、
マクロ「Before2」を実行するとどうなりますか?
> 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
直接 Excel上で そのマクロを実行できるのなら、
分析ツール関数を使っているか、いないかは、関係ないと思います。
>「型が違う」とエラーが出ているようです
型が違うというのは 参照しているシートの [D2] や [D3]セルに
エラー値が入っているとかではないですか?
シート「日付」の[D2] や [D3]セルに日付データが(計算で、数式で)
正しく代入されていれば、
> 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
>
> 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
は何の不具合もなく動きます。
また、どのように VBS のコードを書かれているのか分かりませんが、
VBSから このBookをOpenして Before2 をRUNさせても、正しく実行されますよ
|
|