|
▼さくら さん:
>ご指摘の部分を編集してみたのですが、VBSで呼び出すとやはり同じところで
>「型が違います」とエラーが帰ってきます。
> 構文チェックとは、デバックのVBAコンパイルからでいいのですよね?
> これでは何のエラーもありませんでした。
そうです。VBAの構文的に問題がなくても、
実行時エラーという別のエラーがあります。
とりあえず、今のコードでは Rangeの親シートの指定がないですよね?
マクロを標準モジュールに書いておいて、そこで
親シートの指定を省略すると、ActiveSheetが親シートという解釈が
Excelによってなされますので、そこはプログラムのほうからどのシートの
範囲かを明示しないとまずいですよ
それから、構文エラーでなくても、Loopのなかで セルのプロパティに
何度もアクセスするのは 非効率なので、Loopに入る前に それ用の変数に
値をコピーしておいて、その変数の値と比較するようにします。
ws1.Range("D2").Value などがどのような値か分からないので
↓のサンプルでは Date型の値が入っているものと仮定して書いています。
これをVBSから呼び出したら、どうなりますか?
結果をお知らせください。
Public Sub Before()
Dim ws0 As String
Dim ws1 As Worksheet, ws2 As Worksheet
Dim i As Long, k As Long
Dim date1 As Date 'Double
Dim date2 As Date 'Double
ws0 = Format$(Date, "yyyyMM")
Set ws1 = ThisWorkbook.Worksheets(ws0)
Set ws2 = ThisWorkbook.Worksheets("日付")
date1 = ws1.Range("D2").Value
date2 = ws1.Range("D3").Value
Dim c As Range
For Each c In ws2.Range("A1", ws2.Cells(ws2.Rows.Count, 1).End(xlUp))
Select Case c.Value
Case date1 To date2
MsgBox c.Value
End Select
Next
End Sub
|
|