Excel VBA 質問スレッド №2152 (解決済)
セル位置の縦/横の値の取得について
投稿者 : agalinman 投稿日時 : 2025/10/07(Tue) 18:15:04 OS : 未指定 EXCEL : 未指定
シートの内容が書き換えられたときに動作する Worksheet_change() での記述について質問です。
引数に ByVal Target As Range と設定されています。
変化対象のセルが単独の場合、変化対象のセルの縦位置/横位置の値(何行目/何列目)は
TargetRow
Target.Column
で取得できるのですが、
変化対象のセルが複数の場合、変化対象セルの縦位置/横位置を取得するには
どのように記述したら良いのでしょうか?
例えば具体的な操作例として、
複数セル(A1~E2)を選択し、キーボードの「Del」キーにより値をクリアしたときの
縦位置(1~2)および横位置(A~E)の値を取得する方法は
どのようなマクロの記述になるのでしょうか?
助言いただけると助かります。
よろしくお願いいたします。
シートの内容が書き換えられたときに動作する Worksheet_change() での記述について質問です。
引数に ByVal Target As Range と設定されています。
変化対象のセルが単独の場合、変化対象のセルの縦位置/横位置の値(何行目/何列目)は
TargetRow
Target.Column
で取得できるのですが、
変化対象のセルが複数の場合、変化対象セルの縦位置/横位置を取得するには
どのように記述したら良いのでしょうか?
例えば具体的な操作例として、
複数セル(A1~E2)を選択し、キーボードの「Del」キーにより値をクリアしたときの
縦位置(1~2)および横位置(A~E)の値を取得する方法は
どのようなマクロの記述になるのでしょうか?
助言いただけると助かります。
よろしくお願いいたします。
スポンサーリンク
[返信 1] Re : セル位置の縦/横の値の取得について
投稿者 : てらてら 投稿日時 : 2025/10/07(Tue) 20:57:00
こんにちは。
>変化対象のセルが複数の場合、変化対象セルの縦位置/横位置を取得するには
>どのように記述したら良いのでしょうか
そもそもTargetには、セルのコレクション(配列)が入っていると考えた方が良いです。
以下のように、Targetを For Each in で受けてやると、個々のセルが取り出せます。
列の配列、行の配列を取得したければ、以下のようにリストアップして必要なら重複を削除する処理を加えて仕上げます。
(重複の削除は面倒なので省略しました,,,)
それと、Ctrを押しながら選択すると歯抜けの範囲も選択できるので1つのブロックだけとは限りません。
参考にしてみてください。
こんにちは。
>変化対象のセルが複数の場合、変化対象セルの縦位置/横位置を取得するには
>どのように記述したら良いのでしょうか
そもそもTargetには、セルのコレクション(配列)が入っていると考えた方が良いです。
以下のように、Targetを For Each in で受けてやると、個々のセルが取り出せます。
列の配列、行の配列を取得したければ、以下のようにリストアップして必要なら重複を削除する処理を加えて仕上げます。
(重複の削除は面倒なので省略しました,,,)
それと、Ctrを押しながら選択すると歯抜けの範囲も選択できるので1つのブロックだけとは限りません。
参考にしてみてください。
Private Sub Worksheet_Change(ByVal Target As Range) Dim rng As Range Dim sRow As String Dim sCol As String For Each rng In Target Debug.Print rng.Address sRow = sRow & "," & rng.Row sCol = sCol & "," & rng.Column Next rng Debug.Print sRow Debug.Print sCol End Sub
[返信 2] Re : セル位置の縦/横の値の取得について
投稿者 : agalinman 投稿日時 : 2025/10/08(Wed) 08:22:43
てらてらさん
ご回答、感謝いたします。
For Each inで該当セルの位置を全て引っ張り出すということで、理解できました。
この方法で解決できそうです。
ありがとうございました。
てらてらさん
ご回答、感謝いたします。
For Each inで該当セルの位置を全て引っ張り出すということで、理解できました。
この方法で解決できそうです。
ありがとうございました。
当掲示板について
- Excel VBA に関する掲示板です。Excel VBA に関する質問や疑問、それに対する解決方法など気軽に投稿してください。
- 記事内ではHTMLのタグは使用できません。
- 記事は一度投稿すると修正できません。内容を訂正したい場合は返信で対応してください。
- Sub〜End Sub、Function〜End Function は自動的にプログラムコードとみなし、枠で囲って見やすくします。
- Excel VBA とは関係ないことや、他人が不快に思うようなことなど、管理人が適当でないと判断した記事は削除する場合があります。
スポンサーリンク
返信入力フォーム
( 処理日時 : 2025-10-11 05:50:10 )