- 締切済み
VBA チェンジイベント 別シートにデータ転記
お世話になります。チェンジイベント初心者です。 同一BOOK内の特定のコラムのセルを選択した場合に、自動的に他のシートの特定のセルにデータを転記させたいのですが、どう書けばよいのか分かりません。添付の画像と下記マクロをご覧になって下さい。 -マクロ- Private Sub Worksheet_SelectionChange(ByVal Target As Range) If 1 = ActiveCell.Column Then Worksheets("01").Cells(ActiveCell.Row, 3) = Cells(ActiveCell.Row, 1) Worksheets("01").Cells(ActiveCell.Row, 4) = Cells(ActiveCell.Row, 2) End If End Sub メインのシートは[01]です。このシートのC4を選択し、次に[02]のA列にあるセルを選択すると、[02]のA列・B列のデータがC4・D5に転記されるようにしたいのですが、画像にあります通り[02]のA5を選択してしまうと、[01]のC5・D5に転記されてしまいます。 どのようにすれば、[01]でアクティブにしておいた行の3列目、4列目に転記が行われるのでしょうか? よろしくご指南くださいませ。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- hige_082
- ベストアンサー率50% (379/747)
こんなのは如何? Private Sub Worksheet_SelectionChange(ByVal Target As Range) If 1 = Target.Column Then Target.Resize(1, 2).Copy Worksheets("01").Paste Application.CutCopyMode = False End If End Sub ただのコピペです
- KURUMITO
- ベストアンサー率42% (1835/4283)
シート01とシート02の両方にマクロを設定するとよいでしょう。 シート01では次のようにします。 Private Sub Worksheet_SelectionChange(ByVal Target As Range) If 3 = ActiveCell.Column Then Range("G1") = ActiveCell.Row End If End Sub C列で選択したときの行番号をたとえばG1セルに記録しておきます。 シート02では次のようにします。 Private Sub Worksheet_SelectionChange(ByVal Target As Range) If 1 = ActiveCell.Column Then n = Worksheets("Sheet1").Range("G1") If n = "" Then Exit Sub Worksheets("Sheet01").Cells(n, 3) = Cells(ActiveCell.Row, 1) Worksheets("Sheet01").Cells(n, 4) = Cells(ActiveCell.Row, 2) End If End Sub なお、たとえば前の操作でA5セルがアクティブセルになっている状態ですとそのままではマクロが実行されません。一旦別のセルを選択してからA5セルを選択することでマクロが実行されます。
お礼
なるほど、面白いですね。一旦メモをとっておくなんて、思いつきもしませんでした。 参考になりました。ありがとうございます。
- nag0720
- ベストアンサー率58% (1093/1860)
ActiveCellがシート02を参照しているためです。 Private Sub Worksheet_SelectionChange(ByVal Target As Range) If 1 = ActiveCell.Column Then Worksheets("01").Activate n = ActiveCell.Row Worksheets("02").Activate Worksheets("01").Cells(n, 3) = Cells(ActiveCell.Row, 1) Worksheets("01").Cells(n, 4) = Cells(ActiveCell.Row, 2) End If End Sub
お礼
さっそくのお返事ありがとうございました。 先にSheet01のセルのRowを読み込ませておくんですね。 参考になります。
お礼
シンプルですね!とっても好きです。 Resize(1, 2)・・・初めて見ました。 参考になりました。 ありがとございます。