※変数の定義を強制する方法:
一番上に、「Option Explicit」を追加して、変数の定義が必須となる。
ソース
1 Private Sub CommandButton2_Click() 2 //スクリーンのロック 3 Application.ScreenUpdating = False 4 //異常の発生の場合、「TheEnd」へ移動 5 On Error GoTo TheEnd 6 '----↓----変数定義----↓----' 7 Dim xlTmpBook As Excel.Workbook 8 Dim thisSheet As Excel.Worksheet 9 10 'ファイル集合 11 Dim excelName As Variant 12 '一時開いたファイル 13 14 Dim q As Integer 15 Dim colorRow As Integer 16 17 'ファイルの型とダイアログのタイトルを設定、ファイル集合を返す 18 excelName = Application.GetOpenFilename("Excelファイル (*.csv;*.xls), *.xls", , "★★★★Title★★★★", , True) 19 20 '----↓----繰り返す----↓----' 21 For q = 1 To UBound(excelName) 22 If excelName(q) = False Then 23 Exit Sub 24 Else 25 'Debug.Print excelName(q) 26 End If 27 28 '開いたファイルのチェック、存在しない場合、ファイル名が設定 29 If IsObject(xlTmpBook) Then 30 'ファイルが開く 31 Set xlTmpBook = Application.Workbooks.Open(excelName(q)) 32 Else 33 //処理中止 34 Exit Sub 35 End If 36 //専用のシートを選択 37 Set thisSheet = xlTmpBook.Worksheets("画面項目説明_詳細") 38 39 //シートを活性化にする 40 thisSheet.Range("A1").Activate 41 42 //「A」列の一番最後の行を取得 43 colorRow = CInt(thisSheet.Range(thisSheet.Cells(thisSheet.Rows.count, "A").End(xlUp).Address(ReferenceStyle:=xlA1)).Row) 44 45 //.............. 46 //スクリプト 47 //.............. 48 49 //「A1」セールを選定にする 50 thisSheet.Cells(1, 1).Select 51 52 If (MsgBox("更新しますか?", vbOKCancel) = vbOK) Then 53 //開いたファイルを更新する 54 xlTmpBook.Close savechanges:=True 55 Else 56 //開いたファイルを更新しない 57 xlTmpBook.Close savechanges:=False 58 End If 59 Next q 60 TheEnd: 61 //スクリーンのロック 62 Application.ScreenUpdating = true 63 64 End Sub