- ベストアンサー
Excel2007VBA ブックのアクティブ化
- 質問の主旨(2点)1.なぜ以下のコードでエラーが返されるのか?2.タスクバーにあるアクティブではないブックの1枚目シートを選択するにはどうすればいいか?
- タスクバーにはエクセルブック「Book1」と「Book2」が表示されており、「Book1」の「sheet1」がアクティブです。
- 以下のコードでは、「Book2.xlsx」をアクティブにし、「sheet1」を選択しようとしていますが、実行すると「実行時エラー9インデックスが有効範囲にありません」というエラーが返されます。VBの初心者の場合、どうすれば正しく動作させることができるのかわからないので、アドバイスを求めています。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
Book2が保存されていないから。
その他の回答 (2)
- MARU4812
- ベストアンサー率43% (196/452)
質問履歴を公開してくれてるから言うけど、 Excel を操作しはじめて半年。もうそろそろ 初心者という言葉に頼らないようにすべき。 基本的なデバッグ作業で自力で確認できる 内容だよこれ。 ブック名やシート名がどうなっているかを 確認するコードを書けばいいし。 Sub Macro1() Dim xlsBook As Excel.Workbook Dim xlsSheet As Excel.Worksheet Set xlsBook = Application.Workbooks.Add() '新規 MsgBox xlsBook.Name Set xlsSheet = xlsBook.Worksheets("sheet1") xlsSheet.Range("A1").Value = "Test" MsgBox xlsSheet.Range("A1").Value xlsSheet.Activate End Sub Sub Macro2() Dim xlsBook As Excel.Workbook Dim xlsSheet As Excel.Worksheet Dim strMsg As String For Each xlsBook In Application.Workbooks strMsg = strMsg & "[" & xlsBook.Name & "]" & vbCrLf For Each xlsSheet In xlsBook.Worksheets strMsg = strMsg & xlsSheet.Name & "," Next strMsg = strMsg & vbCrLf Next MsgBox strMsg End Sub
お礼
MARU4812様 ご回答ありがとうございます。 No.1様のご指摘に従って Book2が保存された状態で実行すると、 意図通りの命令ができました。 . 上記のコードは今後のVBA学習の参考と させていただきます。
- FEX2053
- ベストアンサー率37% (7991/21371)
#1さんの問題がまず考えられますけど。いったん保存しないとブック名が確定しないんです。 そのほかに、Book2.xlsxにsheet1が本当にありますか?タマに全角と半角を間違えていたりします。
お礼
FEX2053様 ご回答ありがとうございます。 No.1様のご指摘通り Book2が保存された状態で実行すると、 意図通りの命令ができました。
お礼
tk-is-pg_1206様 ご回答ありがとうございます。 アドバイスいただきましたように Book2が保存された状態で実行すると、 意図通りの命令ができました。 助かりました。