• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Excel2007VBA ブックのアクティブ化)

Excel2007VBA ブックのアクティブ化

このQ&Aのポイント
  • 質問の主旨(2点)1.なぜ以下のコードでエラーが返されるのか?2.タスクバーにあるアクティブではないブックの1枚目シートを選択するにはどうすればいいか?
  • タスクバーにはエクセルブック「Book1」と「Book2」が表示されており、「Book1」の「sheet1」がアクティブです。
  • 以下のコードでは、「Book2.xlsx」をアクティブにし、「sheet1」を選択しようとしていますが、実行すると「実行時エラー9インデックスが有効範囲にありません」というエラーが返されます。VBの初心者の場合、どうすれば正しく動作させることができるのかわからないので、アドバイスを求めています。

質問者が選んだベストアンサー

  • ベストアンサー
noname#158634
noname#158634
回答No.1

Book2が保存されていないから。

dradra33
質問者

お礼

tk-is-pg_1206様 ご回答ありがとうございます。 アドバイスいただきましたように Book2が保存された状態で実行すると、 意図通りの命令ができました。 助かりました。

その他の回答 (2)

  • MARU4812
  • ベストアンサー率43% (196/452)
回答No.3

質問履歴を公開してくれてるから言うけど、 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

dradra33
質問者

お礼

MARU4812様 ご回答ありがとうございます。 No.1様のご指摘に従って Book2が保存された状態で実行すると、 意図通りの命令ができました。 . 上記のコードは今後のVBA学習の参考と させていただきます。

  • FEX2053
  • ベストアンサー率37% (7991/21371)
回答No.2

#1さんの問題がまず考えられますけど。いったん保存しないとブック名が確定しないんです。 そのほかに、Book2.xlsxにsheet1が本当にありますか?タマに全角と半角を間違えていたりします。

dradra33
質問者

お礼

FEX2053様 ご回答ありがとうございます。 No.1様のご指摘通り Book2が保存された状態で実行すると、 意図通りの命令ができました。