• ベストアンサー

ブックを順番に切り替える方法

複数開いているブックを、名前の指定はせずに順番に切り替える方法が分からずに困っています。 例えば、Book1、Book2、Book3を繰り返して切り替える等です。 どのような方法がありますか。 ご回答宜しくお願いします。

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

  • ベストアンサー
  • cj_mover
  • ベストアンサー率76% (292/381)
回答No.4

#1、3、cjです。#3お礼欄拝見しました。 そういうことでしたら、 ユーザーフォームを簡単に活用するのが 煩わしくなくて便利、最適と思います。 ユーザーフォームに コマンドボタンをひとつ配置して(キャプションを"次のブック"等に) ' ' Userform モジュール Private Sub CommandButton1_Click()   ActiveWindow.ActivateNext End Sub ' ' 標準 モジュール Sub Re8331719uf()   UserForm1.Show vbModeless End Sub 準備はこれだけです。 Sub Re8331719uf()を実行して、ユーザーフォームを表示して、 後はボタンを押す度に次のブック(ウィンドウ)がアクティブになります。

di6351
質問者

お礼

とても簡単に切り替えることが出来ました。ユーザーフォームをずっと表示させたまま、編集することも、1つのコマンドボタンでどちらのBookにも切り替えることが出来ました。大変使いやすく思います。

その他の回答 (3)

  • cj_mover
  • ベストアンサー率76% (292/381)
回答No.3

#1、cjです。#1お礼欄拝見しました。 Sub Re8331719a()   ActiveWindow.ActivateNext End Sub Sub Re8331719aa()   Windows(1).ActivateNext End Sub こういうことだったのかも知れません。 ただ、それなら、 Alt + TAB、でウィンドウを切り替えるだけで済む場合も あるのかも知れません。

di6351
質問者

お礼

ありがとうございます。説明が足らずに申し訳ございません。コードを記述しようと思ったのは、頻繁に操作をする為、1クリックで出来るような方法を考えていた為です。ご回答頂いた事を十分に活用したいと思います。

  • kmetu
  • ベストアンサー率41% (562/1346)
回答No.2

Book3になったらまたBook1に戻るとお考えでしたら、以下のような方法もあります。 Sub Sample() Dim i As Integer: i = 1 Do Workbooks(i).Activate MsgBox Workbooks(i).Name If MsgBox("終了しますか?", vbYesNo) = vbYes Then Exit Do End If i = i + 1 If i > Workbooks.Count Then i = 1 End If Loop Until False End Sub

di6351
質問者

お礼

ご回答ありがとうございます。メッセージボックスで「はい」もしくは「いいえ」を選び、目的のBookを表示させることもできるのですね。わざわざBook名をコードに記述せずに任意のBookを選択できるのはとても便利に思います。

  • cj_mover
  • ベストアンサー率76% (292/381)
回答No.1

こんにちは。 使用頻度の高い順に、3例挙げておきます。 使い易いものを選んで構いません。 選ぶ理由が無ければ、最初の記述がお奨めです。 Sub Re8331719be()   Dim wbk As Workbook   For Each wbk In Workbooks     If Not UCase(wbk.Name) Like "PERSONAL.XLS*" Then     ' ' ここにお望みの処理を       wbk.Activate  '  処理の一例       MsgBox wbk.Name  '  処理の一例     End If   Next End Sub Sub Re8331719bi()   Dim i As Long   For i = 1 To Workbooks.Count     If Not UCase(Workbooks(i).Name) Like "PERSONAL.XLS*" Then     ' ' ここにお望みの処理を       Workbooks(i).Activate  '  処理の一例       MsgBox Workbooks(i).Name  '  処理の一例     End If   Next i End Sub Sub Re8331719we()   Dim wnd As Window   For Each wnd In Windows     If Not UCase(wnd.Caption) Like "PERSONAL.XLS*" Then     ' ' ここにお望みの処理を       wnd.Activate  '  処理の一例       MsgBox wnd.Caption  '  処理の一例     End If   Next End Sub

di6351
質問者

お礼

ご回答ありがとうございます。最後にご説明頂いた方法でうまく出来ました。 切り替えた先のBookでコードの実行以外の作業もしたいと考えておりました。その後、再びこのコードの実行で元のBookに戻ることが出来ました。いろいろと組み合わせて使ってみようと思います。

関連するQ&A