VBA で 2つのセルの値を、常に同じ値に、同期するようにさせる方法を教えてください。


バージョン:Microsoft Office Excel 2013
ブック名: test.xlsm
シート: テストシート1
     テストシート2
     テストシート3
     ※シート名を Sheet1 から テストシート1 にそれぞれ各シートの名前を変更しました。

実現したい事:
  ・「テストシート2」の B列 と Z列を同期させたい。
   例えば、 B2のセルを変更したら、Z2のセルの内容を、B2と同じ値にする。
   Z2 を変更した場合には、B2 を Z2の値と同じにする。
  ・上記の動作は、「テストシート2」だけで有効になるようにしたい。
   他のシート、「テストシート1」や「テストシート3」では、B列とZ列を同期させたくない。

質問事項:
 ・VBA のソースコードを教えてください。
 ・当方VBAについて全くの初心者のため、ソースコードを入力するまでの、
  画面遷移方法も教えてください。
  「開発」→「Visual Basic」で Microsoft Visual Basic for Applicationsウィンドウが開くところまではわかりました。

回答の条件
  • 1人1回まで
  • 登録:
  • 終了:2015/08/20 22:45:39
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:a-kuma3 No.1

回答回数4973ベストアンサー獲得回数2154

ポイント1000pt

まず、コードを書くまでのところから。

Microsoft Visual Basic for Applications を開きます。
左上の領域には Book メイのツリーの下に Microsoft Excel Objects の下にシートがあります。
「テストシート2」が2番目に来ていると思うので、それをダブルクリック。
f:id:a-kuma3:20150820222706p:image

右側に「ブック名 - テストシート2 (コード)」というウィンドウが開きます。

そのウィンドウのタイトルの下に、二つのプルダウンリストボックスがあって、
左には「(General)」、右には「(Declarations)」とあるはずです。

左のリストボックスをクリックして、「Worksheet」を選びます。
すると、右のリストボックスが「SelectionChange」に変わります。
ウィンドウの中にコードが表示されたと思うけど、とりあえず気にしない。

右のリストボックスをクリックして、「Change」を選びます。
ウィンドウの中には、次のように空っぽのサブルーチンが二つ表示されているはず。
f:id:a-kuma3:20150820222956p:image

Worksheet_Change の内容を以下のように書き換えます。

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Column = 2 Then   ' B列
        Cells(Target.Row, 26).Value = Target.Value
    ElseIf Target.Column = 26 Then   ' Z列
        Cells(Target.Row, 2).Value = Target.Value
    End If
End Sub

これで、期待した動作になっているはずです。

id:goto_hirosi

早くて、正確なご回答ありがとうございます。
画像がとてもわかりやすく、スムーズに操作することができました。
完璧です! 有難うございました。

2015/08/20 22:45:24

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません