Excel VBAの『アプリケーション定義またはオブジェクト定義のエラー』
未読分:1件
昨日以降(0) 2日前以降(0) 3日前以降(0) 4日前以降(0) 5日前以降(0)
近田 伸矢, 植木 悠二, 上田 寛
IEのデータ収集&自動操作のプログラミング本はこの1冊だけ!IEの起動やポップアップウィンドウ、表示を制御する基本的なコードはもちろん、テキストボックスやラジオボタン、表、ハイパーリンクなどのHTML部品を制御する方法など、自動操作に欠かせないノウハウを丁寧に解説。
Message#1 2015年2月10日(火)22時17分 From: EXCELVBA | 返事 削除 変更 |
Excel VBAに係る『アプリケーション定義またはオブジェクト定義のエラー』について。 数字を手入力するシート「入力シート 1」と、そこから「=」参照するシート「入力シート 2」があります。 双方とも1〜9行目とA列にタイトルが入っていますので、B10セル以降に入力した数字が入っています。 入力内容のエラーチェックをかけて、OKなら、「入力シート 2」から更に「=」参照した、「REA11」シートのB2セル以降をCSVに出力することを想定しています。 以下のとおり記述したのですが、『アプリケーション定義またはオブジェクト定義のエラー』が出てしまいます。初心者なので初歩的なミスかと思いますが、ご指導の程よろしくお願いします。 Public I As Integer Public J As Integer Public ERR_fLG As Boolean Public K As Integer Public lastCol As Integer, col As Integer Public fileNumber As Integer, csvFile As Variant Sub MACRO1() ' ' Macro1 Macro ' On Error GoTo ERR_TRP ERR_fLG = False I = 10 'ここから行単位でのチェック事項 'エラーがあったら、ERR_fLG = Trueをセット '「入力シート 1」のC列は入力必須項目 Do While Worksheets("入力シート 1").Cells(I, 3).Value <> "" '「入力シート 2」のH・J・L・N・O列は共通するエラーチェック「Err_07」をかける J = 8 Call Err_07(I) J = 10 Call Err_07(I) J = 12 Call Err_07(I) J = 14 Call Err_07(I) J = 16 Call Err_07(I) I = I + 1 Loop If ERR_fLG = False Then Call REA_RVA_csv Else MsgBox "Error", vbOKOnly + vbExclamation End If Exit Sub ERR_TRP: MsgBox Error(Err), vbCritical + vbOKOnly End Sub ----------------------------------------------------------------- Private Sub Err_07(ByVal I As Long) I = 10 If (Worksheets("入力シート 2").Cells(I, J).Value) <> "" _ And IsDate(Worksheets("入力シート 2").Cells(I, J).Value) = False Then Worksheets("入力シート 2").Cells(I, J).Interior.ColorIndex = 3 ERR_fLG = True ElseIf (Worksheets("入力シート 2").Cells(I, J).Value) < "2015/10/01" Then Worksheets("入力シート 2").Cells(I, J).Interior.ColorIndex = 3 ERR_fLG = True Else: Worksheets("入力シート 2").Cells(I, J).Interior.ColorIndex = 2 End If End Sub ------------------------------------------------------------------------ Private Sub REA_RVA_csv() K = 2 '指定した範囲(B2セル以降)をCSVで出力 Sheets("REA11").Select 'B2セルを起点。 today = Format(Year(Date), "00") & Format(Month(Date), "00") & Format(Day(Date), "00") csvFile = "C:\REA11.csv" & "_" & today & ".csv" If csvFile = False Then End 'ここはタイトル行のある「B1」とする。 lastCol = Range("B1").End(xlToRight).Column fileNumber = FreeFile Open csvFile For Output As #fileNumber Do While Worksheets("REA11").Cells(K, 2).Text <> "" For col = 2 To lastCol - 1 Print #fileNumber, Cells(K, col).Text & ","; Next Print #fileNumber, Cells(K, col).Text & "" K = K + 1 Loop Close fileNumber |
昨日以降 2日前以降 3日前以降 4日前以降 5日前以降