バージョン: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ウィンドウが開くところまではわかりました。
まず、コードを書くまでのところから。
Microsoft Visual Basic for Applications を開きます。
左上の領域には Book メイのツリーの下に Microsoft Excel Objects の下にシートがあります。
「テストシート2」が2番目に来ていると思うので、それをダブルクリック。
右側に「ブック名 - テストシート2 (コード)」というウィンドウが開きます。
そのウィンドウのタイトルの下に、二つのプルダウンリストボックスがあって、
左には「(General)」、右には「(Declarations)」とあるはずです。
左のリストボックスをクリックして、「Worksheet」を選びます。
すると、右のリストボックスが「SelectionChange」に変わります。
ウィンドウの中にコードが表示されたと思うけど、とりあえず気にしない。
右のリストボックスをクリックして、「Change」を選びます。
ウィンドウの中には、次のように空っぽのサブルーチンが二つ表示されているはず。
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
これで、期待した動作になっているはずです。
早くて、正確なご回答ありがとうございます。
2015/08/20 22:45:24画像がとてもわかりやすく、スムーズに操作することができました。
完璧です! 有難うございました。