人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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ウィンドウが開くところまではわかりました。



●質問者: donkydonut
●カテゴリ:コンピュータ
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● a-kuma3
●1000ポイント ベストアンサー

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

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

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


donkydonutさんのコメント
早くて、正確なご回答ありがとうございます。 画像がとてもわかりやすく、スムーズに操作することができました。 完璧です! 有難うございました。
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ