Excel VBAで複数の非連続セルを選択する方法 – RangeとUnionの使い分け

Visual Basic

Excel VBAを使って複数の非連続セルを選択したい場合、`Range`と`Union`を使用する方法があります。この記事では、これらの使い方を比較し、どちらが適切かについて詳しく解説します。

Rangeを使った非連続セルの選択

`Range`を使って非連続セルを選択する方法は、直感的で書きやすいため多くの初心者にも適しています。例えば、複数のセルをカンマ区切りで指定することができます。以下のようなコードで、複数の非連続セルを選択できます。

Range("C16,C47,E22,E53,F22,F53,G22,G53,H22,H53").Select

この方法は簡単で、可読性が高いですが、指定するセル数が多くなるとコードが長くなり、管理が難しくなることがあります。

Unionを使った非連続セルの選択

一方で、`Union`を使う方法では、複数の`Range`オブジェクトを結合して1つの範囲として扱います。これにより、コードがより柔軟になり、長いリストのセルを管理しやすくなります。以下のコード例では、`Union`を使用して複数のセルを選択しています。

Union(Range("C16"), Range("C47"), Range("E22"), Range("E53"), Range("F22"), Range("F53"), Range("G22"), Range("G53"), Range("H22"), Range("H53")).Select

`Union`を使用すると、セルを追加したり変更したりする際に、より管理しやすくなる場合があります。

RangeとUnionの使い分け

`Range`と`Union`のどちらを使うべきかは、状況に応じて異なります。`Range`はシンプルで書きやすいですが、セル数が増えると冗長になりがちです。一方、`Union`を使うとコードの整理がしやすくなり、複雑な選択範囲を扱う際に便利です。

例えば、255を超えるセル範囲を選択する場合、`Union`を使用することが推奨されます。`Union`を使用することで、セル範囲を効率よく管理でき、コードが長くなるのを防ぐことができます。

Excel VBAでよく使われる命名規則

Excel VBAのコードを書く際、変数名やオブジェクト名に一定のルールを設けることは、コードの可読性を高め、メンテナンスをしやすくします。例えば、ワークシートを表す変数名は`ws`、セル範囲を表す変数名は`rng`など、わかりやすい名前をつけることが推奨されます。

以下は、変数名の一例です。

Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("Sheet1")
Dim rng As Range
Set rng = Union(ws.Range("C16"), ws.Range("C47"))

まとめ

Excel VBAで非連続セルを選択する方法には、`Range`と`Union`の2つの方法があります。`Range`はシンプルで書きやすいですが、セル数が多くなると冗長になるため、`Union`を使うことでコードを整理しやすくなります。コードを書く際は、可読性や管理のしやすさを考慮して、どちらの方法を使うかを決めましょう。また、命名規則に従うことで、コードのメンテナンスが容易になります。

コメント

タイトルとURLをコピーしました