|
>ありがとうございます。
>初回のみ日付を入れれば問題なく動作はします。
>初回の日付が抜けていると下記エラーになるため
>リセットをかけて再施行になります。
>
>「アプリケーション定義またはオブジェクト定義のエラーです。」
>Set rngDate = .Offset(, 1).Resize(, lngCol)
>
>このエラーの回避方法で現在躓いています。
>「該当する日付が見当たりません」などmsgboxの表示を試していますが
>なかなか上手くいかない次第です。
変ですね?
其の様に直す事自体は簡単なのですが?
何か、私のコードから変更していますか?
私の方のテストでは、初回の日付が無くても動いていますが?
>「アプリケーション定義またはオブジェクト定義のエラーです。」
>Set rngDate = .Offset(, 1).Resize(, lngCol)
が出るのは、lngColが0だと成ると思います
其の原因は、
If lngCol = 0 Then
'指定されたファイルをOpen
'日付の列が1つも無い場合後の処理が面倒なので
'先にファイル先頭の日付を入れて置く
dfn = FreeFile
以降の文が実行されてないからです
デバグしてもらえる解るのですが?
If lngCol = 0 Then
に、ブレークポイントを置いて実行します
実行すると、上記の位置でブレークします
F8を押して、ステップ実行します
この時、
'ファイルから取得した日付書き込み
.Offset(, 1).Value = vntField(0)
lngCol = 1
この行を実行しているか確認して下さい
多分、実行していないので、何処の行から飛んでいるのかが知りたいのですが?
また、不本意ながら、ディノさんの言う様に修正する場合の方法も書いて置きます
以下の部分を修正してください
If lngCol = 0 Then
'指定されたファイルをOpen
'日付の列が1つも無い場合後の処理が面倒なので
'先にファイル先頭の日付を入れて置く
dfn = FreeFile
Open vntFileName For Input As dfn
If Not EOF(dfn) Then
'ファイルから1行読み込み
Line Input #dfn, strBuff
'フィールドに分割
vntField = Split(strBuff, ",", , vbBinaryCompare)
End If
Close #dfn
If VarType(vntField) = vbArray + vbVariant Then
'ファイルから取得した日付書き込み
.Offset(, 1).Value = vntField(0)
lngCol = 1
Else
blnWayOut = True
GoTo WayOut
End If
End If
を
If lngCol = 0 Then
blnWayOut = True
GoTo WayOut
End If
とします、そして
If blnWayOut Then
MsgBox "ファイルが空です"
Else
MsgBox "処理が完了しました"
End If
を
If blnWayOut Then
MsgBox "該当する日付の列見出しが有りません"
Else
MsgBox "処理が完了しました"
End If
に修正します
|
|