• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VBA シート間の同期(列、行、選択範囲))

VBA シート間の同期(列、行、選択範囲)

このQ&Aのポイント
  • VBAを使用して、Excelのシート間でセルの同期をする方法について質問です。
  • シート間の同期でセルの同期は他の質問を参照してできましたが、行や列での同期/相互参照は、どのように書けばいいのでしょうか。
  • また、範囲の同期についても質問があります。sheet1のA列とsheet2のB列、またはsheet1のA1:C3とsheet2のD4:F6などの範囲を同期する方法を教えてください。

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

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.1

シート1: private sub Worksheet_Change(byval Target as excel.range)  dim h as range  on error resume next  application.enableevents = false  for each h in application.intersect(target, range("A:A"))   worksheets("Sheet2").cells(h.row, "B").value = h.value  next  application.enableevents = true end sub シート2: private sub Worksheet_Change(byval Target as excel.range)  dim h as range  on error resume next  application.enableevents = false  for each h in application.intersect(target, range("B:B"))   worksheets("Sheet1").cells(h.row, "A").value = h.value  next  application.enableevents = true end sub #補足 次の観点で作成します ○A列やB列の複数セルに同時に編集したような場合もエラーを起こさずに反応する事 ○A列をB列に(同逆)反映するその操作が不要なイベントの引き金にさせない事

club_question
質問者

お礼

ありがとうございます。 当方の要求する動作を確認しました。 回答:No.2様の回答を見まして、 補足事項が重要な部分であると認識しています。 上記codeを基に色々と拡張しながら勉強しています。 複数の列と任意のセルを同期させるのに1枚のシート上に 纏めて書き方などは成功しましたが、 sheet1の”A1:C3”とsheet2の”D4:F6”はどう書くのでしょうか。 色々と試行錯誤しましたが、 どうもうまくいきません。。 お手すきの時に併せてご教授いただければ幸甚です。 OKwaveもVBAも2日目で、、、 どうも後手後手に回っています。。。

その他の回答 (1)

  • Nouble
  • ベストアンサー率18% (330/1783)
回答No.2

既に回答は出ているようなので、横から少し解説を ネットで読んだのですが、 動きをトレースすると 「此、どうなの?」 と、いう点についてよく解ります。 操作する人が シート1の当該セルを書き換えます するとシート1のイベントがサブルーティンコールのように発生して 以前の何物をもが終わる前にシート2の当該セルと書き換えます。 するとシート2のイベントがサブルーティンコールのように発生して 以前の何物をもが終わる前にシート1の当該セルを書き換えます。 するとシート1のイベントがサブルーティンコールのように発生して 以前の何物をもが終わる前にシート2の当該セルと書き換えます。 するとシート2のイベントがサブルーティンコールのように発生して 以前の何物をもが終わる前にシート1の当該セルを書き換えます。 するとシート1のイベントがサブルーティンコールのように発生して 以前の何物をもが終わる前にシート2の当該セルと書き換えます。 するとシート2のイベントがサブルーティンコールのように発生して 以前の何物をもが終わる前にシート1の当該セルを書き換えます。 するとシート1のイベントがサブルーティンコールのように発生して 以前の何物をもが終わる前にシート2の当該セルと書き換えます。 するとシート2のイベントがサブルーティンコールのように発生して 以前の何物をもが終わる前にシート1の当該セルを書き換えます。 するとシート1のイベントがサブルーティンコールのように発生して 以前の何物をもが終わる前にシート2の当該セルと書き換えます。 するとシート2のイベントがサブルーティンコールのように発生して 以前の何物をもが終わる前にシート1の当該セルを書き換えます。 … このように 全て何もENDを迎えずに ルーティーンが延々積み重なっていきます。 正に… ですね。 あごが床を突き抜けます。 一切終わりゃしないですよね? なので此を避けるために イベント発生を抑制してやる必要があるわけです。 へ? 抑制中の他のイベント発生は… て? 済みません、知ったこっちゃありません 滝汗(^_^;) 少なくとも私の今の能力では対処不能ですね、 如何でしょうか? お役に立てていたならば幸いです。

club_question
質問者

お礼

先ほど”お礼入力”を入れた後に気づきましたが、 ”お礼入力”に加えて”補足”という欄にコメントを残さなければ一般に公開されず外からは、貴殿の回答をスルーしてるように見えるのですね。。 しかも”解決済み”にしたら、 質問のステータスも戻せないのですね。。。 お気を悪くされましたら、 大変申し訳ございませんでした。

関連するQ&A

専門家に質問してみよう