
次のプログラムですが、ブックが勝手に切り替わってしまいます。
Main, Sub 二つのブックを同時に開き、Mainのアクティブセルをコマンドボタンを押して動かすだけでSubのブックがアクティブになってしまいます。
Rem 標準モジュール
Public SubBook As Workbook
Public MainBook As Workbook
Private Sub Workbook_Open()
Set MainBook = ThisWorkbook
Dim wsh As Object
Set wsh = CreateObject("WScript.Shell")
Workbooks.Open wsh.SpecialFolders("Desktop") + "\Sub.xlsm"
Set SubBook = ActiveWorkbook
UserForm1.Show vbModeless
End Sub
Private Sub CmdA1_Click()
ActiveSheet.Range("A1").Activate
End Sub
Private Sub CmdG4_Click()
ActiveSheet.Range("G4").Activate
End Sub
Private Sub CmdMain_Click()
MainBook.Activate
End Sub
Private Sub CmdSubActivate_Click()
SubBook.Activate
End Sub
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
No1です
>移動ボタンを押すと勝手にSubBookがアクティブになってしまい
エクセル側が、フォームを表示した際の状態をどこかに記憶しているようですね。
まぁ、表示したいブックが決まっているようですので、クリックイベントでの処理で
>ActiveSheet
のような状態依存の指定方法をせずに、表示したいブック・シートを明示すれば済む話のように思いますけれど・・・?
ActiveSheetをMainBookに変えて明示するようにしたのですが、それでも移動ボタンを押す度にMain, Sub, Main, SubとBookが交互に変ります。
No.1
- 回答日時:
こんばんは
全体像が不明なので、Public変数を用いている意図などがわかりかねますが・・
Workbooks.Openメソッドを実行すると、手操作と同様で開いたブックがActiveになります。
(これは仕様なので仕方がないですね)
元のブックをアクティブにしておきたければ、その後で
MainBook.Activate
などを実行しておけば済むと思います。
ブックを開く間に画面がチラつくのが気になる様であれば、Subのブックは非表示の別インスタンスで開くという方法もあります。
こちらの場合は、ブックの扱いが若干面倒になりますけれど・・
分かりにくくてすみません。
先ずMainBook.xlsmとSubBook.xlsmの二つのファイルがあります。
そしてMainBookの方を起動するとSubBookの方も起動します。
MainBookの方にはUserForm1が有り、このフォームにはアクティブセルがA1セルへ移動するボタン、G4セルへ移動するボタン、MainBookをアクティブにするボタン、SubBookをアクティブにするボタンが付いています。(計4つのボタン)
症状:MainBookがアクティブの状態で、移動ボタンを押すと勝手にSubBookがアクティブになってしまい、次移動ボタンを押すとSubBookの方が反応しセルが移動してしまいます。
またこのときセルの周りの枠線が、MainBook、SubBookのどちらにも付いてしまいます。
エクセルのバグとしか思えないです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 2つ目のコンボボックスが動作しません。 3 2023/03/25 12:29
- Excel(エクセル) VBA Scripting.Dictionary 連想配列 複数参照する方法 2 2021/12/17 01:52
- Visual Basic(VBA) EXCEL VBA シート貼り付け 3 2021/11/15 12:33
- Visual Basic(VBA) VBA countif について 3 2021/12/16 20:13
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 1 2023/08/08 15:45
- Visual Basic(VBA) Excel VBA ユーザーフォーム1のコンボボックスに別ブックの値を反映させたいです。 6 2023/03/21 16:12
- Excel(エクセル) Rangeメソッドは失敗しました。globalオブジェクトについて 6 2021/11/21 21:54
- Visual Basic(VBA) 【ご教示ください】VBAの記述方法がわかりません。 2 2022/08/12 21:28
- Excel(エクセル) 3つのマクロを連続実行の中で、1つ目のマクロ要件を満たさなかったら、マクロ2・3を実行しない為には 1 2023/10/15 13:42
- Visual Basic(VBA) VBAが止まります。 1 2022/09/02 14:51
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
別ブックをダイアログボックス...
-
VBA シートをコピーする際に Co...
-
VBAで別ブックのシートを指定し...
-
Excelマクロ 該当する値の行番...
-
エクセルVBAが途中で止まります
-
【Excel VBA】書き込み先ブック...
-
VBAで別のブックにシートをコピ...
-
VBA 別ブックからコピペしたい...
-
ワイルドカード「*」を使うとう...
-
【ExcelVBA】インデックスが有...
-
エクセル VBA 他シートの行を選...
-
VBA コードを実行すると画面が...
-
シートをコピーする下記記述で...
-
Excel にて、 リストボックスの...
-
VBAで複数のブックを開かずに処...
-
[Excel]ADODBでNull変換されて...
-
VBA 実行時エラー 2147024893
-
エクセル共有化のトラブル
-
フォルダ内の全てのファイルに...
-
拡張メタファイルにて貼り付け
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBA シートをコピーする際に Co...
-
VBA 別ブックからコピペしたい...
-
別ブックをダイアログボックス...
-
エクセルVBAが途中で止まります
-
ワイルドカード「*」を使うとう...
-
【Excel VBA】書き込み先ブック...
-
VBAで別ブックのシートを指定し...
-
【ExcelVBA】zip圧縮されたCSV...
-
VBAで別のブックにシートをコピ...
-
VBA コードを実行すると画面が...
-
Excel2007VBAファイルの表示に...
-
VBAで複数のブックを開かずに処...
-
[Excel]ADODBでNull変換されて...
-
Excelファイルを開くとき、読み...
-
VBA 実行時エラー 2147024893
-
Excelマクロ 該当する値の行番...
-
Excel にて、 リストボックスの...
-
VBS Bookを閉じるコード
-
複数のエクセルファイルとシー...
-
【ExcelVBA】インデックスが有...
おすすめ情報
SubBook.Activate
MainBook.Activate
因みにこれを前置しておくと大丈夫です。
ちゃんとMainBookだけがが動作します。