|
>どうしても下記の部分がデバッグで表示されます。
>何が考えられるでしょうか
>
>'セル値が数値として入力されている場合
>lngFound = DataSearch(CLng(vntDate), rngScope, lngOver)
Excel2003で検証し、此れの原因が解りました
当方、Excel97でこのコードを作成していますが
其れ以降のExcelのVar.で、Variant型配列の扱いが少し違う様です
以下を修正して下さい
現状のコード
'「20050731」形式の日付をシリアル値に変換
vntField(0) = DateValue(Left(vntField(0), 4) _
& "/" & Mid(vntField(0), 5, 2) _
& "/" & Right(vntField(0), 2))
修正後のコード
'「20050731」形式の日付をシリアル値に変換
vntField(0) = CLng(DateValue(Left(vntField(0), 4) _
& "/" & Mid(vntField(0), 5, 2) _
& "/" & Right(vntField(0), 2)))
尚、mimiさんが、修正している以下の部分も修正方法が違うので
再修正して下さい(特に問題は無さそうですが?)
1、「Dim fileToOpen As Variant」使っていない変数を宣言する必要が無いのでこの行不要
2、以下のFunctionの修正は不要、汎用性が無くなるので元のままの方が善いと思います
Private Function GetReadFile(vntFileNames As Variant, _
Optional strFilePath As String, _
Optional blnMultiSel As Boolean _
= False) As Boolean
Dim strFilter As String
ChDrive "C" '修正しました
ChDir "\Program Files\"
'フィルタ文字列を作成
strFilter = "テキスト ファイル (*.txt), *.txt"
'もし、ディフォルトのファイル名が有る場合
If vntFileNames <> "" Then
SendKeys vntFileNames & "{TAB}", False
End If
'「ファイルを開く」ダイアログを表示
vntFileNames _
= Application.GetOpenFilename(strFilter, 2, , , blnMultiSel)
If VarType(vntFileNames) = vbBoolean Then
Exit Function
End If
GetReadFile = True
End Function
尚、この部分の修正方法が有りますので下に書いて置きます
以下を修正して下さい
Dim strProm As String
'Dim fileToOpen As Variant '☆不要
'Textファイルの有るフォルダを指定
' strPath = ThisWorkbook.Path '★この行変更
strPath = "C:\Program Files"
尚、ここに書きませんでしたが、
'Textファイルの有るフォルダを指定
strPath = "C:\Program Files"
'Defaultのファイル名を指定する場合
vntFileName = "Test" '◎追加しても可
'「ファイルを開く」ダイアログを表示
If Not GetReadFile(vntFileName, strPath, False) Then
strProm = "マクロがキャンセルされました"
GoTo WayOut
End If
とすれば、「ファイルを開くダイアログ」の「ファイル名」Boxに「Test」と
表示され、"C:\Program Files"の中で、Testが頭に付くファイルだけ表示されます
ワイルドカードも使えると思います
|
|