Stepheは、ユーザーがマクロを実行する前に選択したセルに基づいて操作を実行するマクロを開発する必要があります。彼女は、ユーザーがセルの範囲を選択した場合にこれを行う方法を知っていますが、ユーザーが連続していないセルの範囲を選択した場合に、選択範囲内のセルをステップスルーする方法を知りません。

VBAに関しては、連続した選択と連続していない選択の間にほとんど違いはありません。 Excelでは、それぞれに同じようにアクセスできます。次のコードスニペットについて考えてみます。

Dim c As Range

For Each c In Selection     ' do something here     MsgBox c.Address & vbTab & c.Value Next c

この場合、選択した範囲のセルは、For …​ Nextループを使用して一度に1つずつステップスルーされます。ループ内では、c変数は個々のセルを表し、示されているように参照で使用できます。

何らかの理由で、選択範囲内の隣接する各領域にアクセスする場合は、次のスニペットに示すように、Areasグループを具体的にアドレス指定することでアクセスできます。

Dim a As Range Dim c As Range

For Each a In Selection.Areas     'Now each a refers to a contiguous range     'Do something here with areas, if desired     For Each c In a.Cells         'Now each c refers to a cell in the area         'Do something here         MsgBox c.Address & vbTab & c.Value     Next c Next a

アクセスする範囲(連続または非連続)がExcelで名前が付けられている場合は、名前が付けられた範囲のセルだけにアクセスすることもできることに注意してください。次のように、これらの各例の「選択」という単語を範囲の名前に置き換えるだけです。

Dim c As Range

For Each c In Range("MyNamedRange")

' do something here     MsgBox c.Address & vbTab & c.Value Next c

注:

このページ(または_ExcelTips_サイトの他のページ)で説明されているマクロの使用方法を知りたい場合は、役立つ情報を含む特別なページを用意しました。

link:/ excelribbon-ExcelTipsMacros [ここをクリックして、新しいブラウザタブでその特別なページを開きます]

_ExcelTips_は、費用効果の高いMicrosoftExcelトレーニングのソースです。

このヒント(8703)は、Microsoft Excel 2007、2010、2013、2016、2019、およびOffice 365のExcelに適用されます。Excelの古いメニューインターフェイス用のこのヒントのバージョンは、次の場所にあります。

link:/ excel-Stepping_Through_a_Non-Contiguous_Range_of_Cells [非連続範囲のセルをステップスルーする]