
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$A$1" Then
Application.EnableEvents = False
Dim TargetBook As Workbook
Set TargetBook = Workbooks.Open(ファイルパス)
Windows("2.xlsm").Visible = False
TargetBook.Sheets(1).Cells(1, 1) = ThisWorkbook.Sheets(1).Cells(1, 1)
TargetBook.Close SaveChanges:=True
Application.EnableEvents = True
End If
End Sub
このコードを両方のブックのSheet1に書き込んだ状態で1.xlsmのセルA1の値を変更すると2.xlsmが開けなくなります(その逆も)。原因がわかる方、教えていただけると嬉しいです。
No.2ベストアンサー
- 回答日時:
こんにちは、
専門家でないので正しい回答でない可能性がありますが
Windows("2.xlsm").Visible = False 又は
Windows("1.xlsm").Visible = False により設定された設定が
Excelインスタンスが終了するまで残る(有効)なのでは無いでしょうか?
従ってCloseの前で一瞬表示する必要があると思いますね
Windows("2.xlsm").Visible = True
TargetBook.Close SaveChanges:=True
ちなみに、Windowにかかっているので、開いていると思います
VBエディターにはインスタンスされると思いますので確認してみてください
不具合なのか仕様なのか・・設定しているのだから当然なのか?
良く分かりません
No.3
- 回答日時:
#2
確認の為、少し調べました
間違いがありましたので訂正します
>Excelインスタンスが終了するまで残る(有効)
見当違いでした。非表示WindowはOS側の制御のようですね
Excelを終了しても 表示Windowとして実行されないようです
Windows("2.xlsm").Visible = True で 表示されるのが嫌な場合や
不具合、デバッグなどで終了してしまう場合の取り合えずなら
各対象ブックに
Private Sub Workbook_Open()
Windows(ThisWorkbook.Name).Visible = True
End Sub
なんて方法も・・と力業や体裁を考えない私は有かな?と
(当然として設定を戻すのが良いと思います)
No.1
- 回答日時:
ご存じのように、Cell(1,1)のアドレスはA1ですので、両方のブックにある
Private Sub Worksheet_Change(ByVal Target As Range)
・・・
TargetBook.Sheets(1).Cells(1, 1) = ThisWorkbook.Sheets(1).Cells(1, 1)
・・・
※この時点で他方のPrivate Sub Worksheet_Changeが発動
End Sub
が無限に互いを呼び出しあっているのはないですか?
ただし、エンドレスなだけであって、ファイルが開けなくことはないと思います。
原因は
Set TargetBook = Workbooks.Open(ファイルパス)
ではないでしょうか?
このコマンドはすでに開いているファイルに対してはエラーを起こします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) vbaのエラー対応(実行時エラー7:メモリが不足しています) 4 2023/04/24 00:20
- Visual Basic(VBA) エクセルで、1つのセルで上書き足し算して セルの範囲を指定できますか? パソコン初心者です。 お時間 3 2023/07/05 06:13
- Excel(エクセル) VBAについて 3 2022/06/19 18:19
- Visual Basic(VBA) 【VBA】写真の貼り付けコードがうまく機能しません。 5 2022/09/01 18:43
- Visual Basic(VBA) エクセルVBA(実行時エラー438)の対処法を教えてもらえないでしょうか 3 2023/04/22 13:43
- Excel(エクセル) 2つのVBAを一緒にしたら機能しなくなりました(エクセル) 7 2022/06/02 12:41
- Visual Basic(VBA) 【変更】ファイルを閉じてダイアログで保存した時、更新したシートだけの処理の実行をする 5 2022/03/26 18:31
- Visual Basic(VBA) 【追加】ファイルを閉じてダイアログで保存した時だけ処理の実行をする 3 2022/03/23 15:43
- Excel(エクセル) エクセルVBAでオブジェクトが必要です 2 2022/09/10 16:37
- Visual Basic(VBA) Sheet1のA列にコードB列にメアド、Sheet2のB列にコード一覧とD列にメアド一覧があり、Sh 3 2022/10/19 11:57
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【VBA】 結合セルに複数画像と...
-
【マクロ】シートの変数へ入れ...
-
【マクロ】売上一覧YYYYMMDDHHS...
-
Vba Array関数について教えてく...
-
vbsでのwebフォームへの入力制限?
-
VBAでユーザーフォームを指定回...
-
【ExcelVBA】5万行以上のデー...
-
[VB.net] ボタン(Flat)のEnable...
-
Vba セルの4辺について罫線が有...
-
エクセルのマクロについて教え...
-
Excel VBA 選択範囲の罫線色の...
-
【マクロ】並び替えの範囲が、...
-
【マクロ】開いているブックの...
-
vb.net(vs2022)のtextboxのデザ...
-
エクセルのVBAコードと数式につ...
-
改行文字「vbCrLf」とは
-
エクセルの改行について
-
算術演算子「¥」の意味について
-
Excelのマクロについて教えてく...
-
【ExcelVBA】dictionaryの重複...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Vba セルの4辺について罫線が有...
-
vbsでのwebフォームへの入力制限?
-
【ExcelVBA】5万行以上のデー...
-
【マクロ】売上一覧YYYYMMDDHHS...
-
【マクロ】開いているブックの...
-
【マクロ】並び替えの範囲が、...
-
エクセルの改行について
-
エクセルのマクロについて教え...
-
vb.net(vs2022)のtextboxのデザ...
-
VBAでCOPYを繰り返すと、処理が...
-
VBA ユーザーフォーム ボタンク...
-
エクセルのVBAコードと数式につ...
-
エクセルのVBAコードについて教...
-
[VB.net] ボタン(Flat)のEnable...
-
【マクロ】変数を使った、文字...
-
改行文字「vbCrLf」とは
-
質問58753 このコードでうまく...
-
【マクロ】シートの変数へ入れ...
-
ワードの図形にマクロを登録で...
-
算術演算子「¥」の意味について
おすすめ情報