Vbaで範囲とセルを使用するにはどうすればよいですか?
VBA の範囲とセルの概要
Excel ワークブックを見回すと、セルを中心にすべてが機能していることがわかります。セルとセル範囲にデータを保存すると、すべてが始まります。
VBA を最大限に活用するには、コード内でセルと範囲を使用する方法を学ぶ必要があります。このためには、Range オブジェクトについてしっかりと理解する必要があります。これを使用すると、次の方法でコード内のセルを参照できます。
- 単一の細胞。
- セルの範囲
- 行または列
- 3次元の範囲
RANGE オブジェクトは Excel のオブジェクト階層の一部です:アプリケーション ➜ ワークブック ➜ ワークシート ➜ 範囲、およびワークシート内のその他の場所。したがって、RANGE オブジェクトを参照するコードを記述すると、次のようになります。
Application.Workbook(“Workbook-Name”).Worksheets(“Sheet-Name”).Range
セルまたはセル範囲を参照すると、次のことができます。
- 値を読み取ることができます。
- そこに値を入力できます。
- また、形式を変更することもできます。
これらすべてを行うには、セルまたはセル範囲を参照する方法を学ぶ必要があります。このチュートリアルの次のセクションでは、さまざまな方法でセルを参照する方法を学びます。セルまたはセル範囲を参照するには、3 つの異なる方法を使用できます。
- ビーチ物件
- セルのプロパティ
- オフセットプロパティ
これらの中でどれが最適かはニーズによって異なりますが、自分に合ったものを選択できるように 3 つすべてを学習する価値はあります。
それでは、始めましょう。
ビーチ物件
Range プロパティは、VBA コードで範囲を参照する最も一般的で一般的な方法です。 Range プロパティを使用すると、セルのアドレスを参照するだけです。構文を教えてください。
expression.range(address)
ここで、式は VBA オブジェクトを表す変数です。したがって、セル A1 を参照する必要がある場合、記述する必要があるコード行は次のようになります。
Application.Workbook(“Book1”).Worksheets(“Sheet1”).Range(“A1”)
上記のコードは、ワークシート “Sheet1” およびワークブック “Book1” にあるセル A1 を参照していることを VBA に伝えます。
注:範囲オブジェクトにセル アドレスを入力するときは、必ず二重引用符で囲んでください。しかし、ここで理解すべきことがあります。 ExcelのVBAを使っているので「アプリケーション」という言葉を使う必要はありません。したがって、コードは次のようになります。
Workbook(“Book1”).Worksheets(“Sheet1”).Range(“A1”)
Book1 を使用している場合は、コードをさらに減らすことができます。
Worksheets(“Sheet1”).Range(“A1”)
ただし、すでに「Sheet1」ワークシートを使用している場合は、コードをさらに削減して、次のもののみを使用できます。
Range(“A1”)
ここで、セル範囲全体 (つまり、複数のセル) を参照したいとします。次のようなコードを記述する必要があります。
Range("A1:A5")
上記のコードでは、5 つのセルで構成される範囲 A1 から A5 を参照しています。 range オブジェクトを使用して名前付き範囲を参照することもできます。 「Salesdiscount」という名前の名前付き範囲を参照すると仮定すると、次のようなコードを書くことができます。
Range("Sales Discount")
非連続範囲を参照したい場合は、次のようなことを行う必要があります。
Range("A1:B5,D5:G10")
行または列全体を参照したい場合は、以下のようなコードを入力する必要があります。
Range("1:1") Range("A:A")
この時点で、セルとセル範囲を参照する方法が明確に理解できました。しかし、それを最大限に活用するには、他のことを行うためにそれを使用する方法を学ぶ必要があります。
ここには、VBA で範囲とセルを操作する方法を学ぶために使用できるチュートリアルの包括的なリストがあります。
- Excel で VBA を使用して行を数える
- Excel VBA フォント (色、サイズ、種類、太字)
- Excel VBA 列または行の表示と非表示を切り替える
- Excel で VBA を使用してセルに枠線を適用する
- Excel で VBA を使用して最後の行、列、セルを検索する
- ExcelでVBAを使用して行を挿入する
- VBA コードを使用して Excel でセルを結合する
- Excel で VBA を使用して範囲/セルを選択する
- VBA コードを使用してワークシート内のすべてのセルを選択する
- ExcelのVBAでのActiveCell
- Excel の VBA の特殊セル メソッド
- Excel の VBA の UsedRange プロパティ
- VBA 自動調整 (行、列、またはワークシート全体)
- VBA ClearContents (セル、範囲、またはワークシート全体から)
- VBA 範囲を別シート+ワークブックにコピー
- VBA セルに値を入力 (設定、取得、変更)
- VBA 列の挿入 (単一および複数)
- VBA | という名前の範囲(静的 + 選択 + 動的)
- VBA 範囲オフセット
- VBA ソート範囲 | (降順、複数列、ソート方向
- VBA テキストの折り返し (セル、範囲、ワークシート全体)
- VBA セルが空 + 複数のセルであるかどうかをチェックする
1. セルを選択してアクティブ化します
セルを選択したい場合は、範囲を使用できます。方法を選択します。たとえば、セルA5を選択したい場合は、範囲を指定し、その後に「.Select」を追加するだけです。
Range(“A1”).Select
このコードは、VBA にセル A5 を選択するように指示します。セル範囲を選択する場合は、その範囲を参照し、その後に「.Select」を追加するだけです。
Range(“A1:A5”).Select
セルをアクティブ化するために使用できる別の方法もあります。
Range(“A1”).Activate
ここで、一度にアクティブにできるセルは 1 つだけであることに注意してください。 「.Activate 」メソッドで範囲を指定した場合でも、その範囲が選択されますが、アクティブセルは範囲内の最初のセルになります。
2. セルに値を入力します
range プロパティを使用すると、セルまたはセル範囲に値を入力できます。簡単な例を使用して、それがどのように機能するかを理解してみましょう。
Range("A1").Value = "Exceladvisor"
上の例では、範囲として A1 を指定し、その後、VBA にセルの value プロパティにアクセスするように指示する「 .Value 」を追加しました。
次に等号を入力し、次に入力する値を入力します (テキスト値を入力する場合は二重引用符を使用する必要があります)。数値の場合、コードは次のようになります。
Range("A1").Value = 9988
セル範囲 (つまり複数のセル) に値を入力したい場合は、その範囲を指定するだけです。
Range("A1:A5").Value = "Exceladvisor"
非連続範囲を参照している場合のコードは次のとおりです。
Range("A1:A5 , E2:E3").Value = "Exceladvisor"
3. セル/範囲をコピーして貼り付けます
Range プロパティを使用すると、「.Copy」メソッドを使用してセルをコピーし、コピー先のセルに貼り付けることができます。セル A5 をコピーする必要があるとします。対応するコードは次のようになります。
Range("A5").Copy
このコードを実行すると、セル A5 がコピーされるだけですが、次のステップでは、このコピーされたセルを宛先セルに貼り付けます。これを行うには、貼り付け先のセルの後に destination キーワードを追加する必要があります。したがって、セル A1 をコピーしてセル E5 に貼り付ける場合、コードは次のようになります。
Range("A1").Copy Destination:=Range("E5")
同様に、複数のセルの範囲を扱う場合、コードは次のようになります。
Range("A1:A5").Copy Destination:=Range("E5:E9")
セル範囲をコピーし、コピー先の範囲としてセルを指定した場合、VBA はコピー先として指定したセルからコピー範囲全体をコピーします。
Range("A1:A5").Copy Destination:=Range("B1")
上記のコードを実行すると、宛先範囲として B1 しか指定していないにもかかわらず、VBA は範囲 A1:A5 をコピーして B1:B5 に貼り付けます。
ヒント: 「.Copy」メソッドと同様に、「.Cut」メソッドを使用してセルを切り取り、宛先を使用して貼り付けるだけです。
4. Font プロパティと Range プロパティを使用します。
range プロパティを使用すると、すべてのフォント設定を変更するのに役立つセルの font プロパティにアクセスできます。アクセスできるフォントには合計 18 の異なるプロパティがあります。セル A1 のテキストを太字にしたいとします。コードは次のようになります。
Range("A1").Font.Bold = True
このコードは、A1 範囲にあるフォントの BOLD プロパティにアクセスするように VBA に指示します。このプロパティは TRUE に設定されています。ここで、セル A1 に取り消し線を適用するとします。このタイムコードは次のようになります。
先ほども述べたように、使用できるプロパティは合計 18 種類あるので、必ずすべてをチェックして、どれが役立つかを確認してください。
5. セルから書式設定をクリアする
「.ClearFormats」メソッドを使用すると、セルまたはセル範囲の書式のみをクリアできます。以下のように範囲指定後に「.ClearFormat」を追加するだけです。
Range("A1").ClearFormats
上記のコードを実行すると、セル A1 からすべての書式設定がクリアされます。範囲全体に対してそれを実行したい場合は、何をすればよいかわかりますよね?
Range("A1:A5").ClearFormats
上記のコードは、A1 から A5 までの範囲から書式設定を削除するだけです。
セルのプロパティ
RANGE プロパティに加えて、「Cells」プロパティを使用してワークシート内のセルまたはセル範囲を参照できます。セルのプロパティでは、セル参照を使用する代わりに、セルの列番号と行番号を入力する必要があります。
expression.Cells(Row_Number, Column_Number)
ここで、式は VBA オブジェクトであり、Row_Number はセルの行番号、Column_Number はセルの列です。したがって、セル A5 を参照したい場合は、以下のコードを使用できます。
Cells(5,1)
このコードは、行番号 5、列番号 1 にあるセルを参照するように VBA に指示します。構文が示すように、列番号をアドレスとして入力する必要がありますが、実際には、必要に応じて二重引用符で囲むだけで列のアルファベットを使用することもできます。
以下のコードはセル A5 も参照します。
Cells(5,"A")
VBAで選択するには、最後に「.Select」を追加するだけです。
Cells(5,1).Select
上記のコードは、ワークシートの 5 行目、1 列目にあるセル A5 を選択します。
OFFSET プロパティ
VBA で範囲をうまく使いたい場合は、OFFSET プロパティの使用方法を知る必要があります。別のセルから特定の行数と列数離れたセルを参照すると便利です。
現在アクティブ セルが B5 で、B5 から 3 列右、1 行下のセルに移動したい場合は、この SHIFT を実行できます。 OFFSET に使用する必要がある構文は次のとおりです。
expression.Offset (RowOffset, ColumnOffset)
- RowOffset:この引数では、通過する行数を VBA に伝える数値を指定する必要があります。正の数値はラインダウンを定義し、負の数値はラインアップを定義します。
- ColumnOffset : この引数では、移動する列の数を VBA に伝える数値を指定する必要があります。正の数は右の列を定義し、負の数は左の列を定義します。
たとえば、上で説明した簡単なコードを書いてみましょう。
- まず最初に、移動する範囲を定義する必要があるため、以下のコードを入力します。
- その後、以下のように「.Offset」と入力し、左かっこを入力します。
- 次に、移動先の行番号、列番号を入力する必要があります。
- 最後に、「.Select」を追加して、移動先のセルを選択するように VBA に指示する必要があります。
したがって、このコードを実行すると、セル B5 の 1 行下、3 列右のセルが選択されます。
OFFSETを使用して範囲のサイズを変更する
OFFSET を使用すると、セルに移動できるだけでなく、範囲のサイズをさらに変更することもできます。上の例を続けてみましょう。
Range("B5").Offset(1, 3).Select
上記のコードはセル E6 に誘導します。ここで、E6 の 5 つの列と 3 つの行で構成されるセル範囲を選択する必要があるとします。つまり、OFFSETを使用した後、「.Resize」を追加してサイズ変更プロパティを使用する必要があります。
Range("B5").Offset(1, 3).Resize
次に、行サイズと列サイズを入力する必要があります。先頭に括弧を入力し、行サイズを設定する数値を入力してから、列サイズを設定する数値を入力します。
Range("B5").Offset(1, 3).Resize(3,5)
最後に「.Select」を追加して範囲を選択するように VBA に指示します。このコードを実行すると範囲が選択されます。
Range("B5").Offset(1, 3).Resize(3, 5).Select
したがって、このコードを実行すると、E6 から I8 までの範囲が選択されます。
Range("A1").Font.Strikethrough = True