- 締切済み
エクセルVBAについて
以下の処理をマクロで実行しようと思っていますが、わからない部分があるので教えてください。 (例): A B C D E F G 1 1 2 3 4 5 6 7 2 10 30 50 70 90 130 150 3 4 (1)1行目のどこかの連続したセル(例えばセルA1から セルD1)をドラッグする。 (2)マクロを実行する。 (3)セルA4に、「D2-A2」を計算した値が自動的に入力 される。この例では「70-10=60」 これは、(1)で例えばセルB1からF1をドラッグした場 合には、「F2-B2」を計算した値を入力したいので す。 要は、連続したセルを選択してその始点と終点のセルの行と列を取得できればこの処理はできると思うのですが、方法が分かりませんので教えてください。 よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- nazo-nazo
- ベストアンサー率39% (17/43)
私の場合は、 Selection.Address で始点と終点を取得します。
- Wendy02
- ベストアンサー率57% (3570/6232)
'<該当するシートモジュールか標準モジュール> Sub test() With Selection If .Row <> 1 Or .Count < 2 Then Exit Sub '一行目にない場合や、セルをひとつしか選択していない場合は取りやめ Range("A4").Value = .Cells(1, 1).Offset(1, .Count - 1).Value - .Cells(1, 1).Offset(1).Value End With End Sub 後は、これを、Worksheet_SelectionChange イベントにすると良いでしょうね。
補足
早々の回答、ありがとうございます! しかしご指摘の方法を試してみたのですが、1行目のどのセルをドラッグして選択してマクロを実行しても、A4セルには0の値しか入らないのですが。。。。 申し訳ありませんが再度のアドバイスをいただけたら幸いです。
補足
回答ありがとうございます。 ご指摘の方法で確かに始点と終点を取得できるのですが、$B$1:&D$1 のような形で出てきてしまい、D1とB1それぞれのセルの位置を表せないので、D1とB1の差を計算するといった計算式がかけません。 このような場合はどうすればいいのでしょうか?