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")

この時点で、セルとセル範囲を参照する方法が明確に理解できました。しかし、それを最大限に活用するには、他のことを行うためにそれを使用する方法を学ぶ必要があります。

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 に伝える数値を指定する必要があります。正の数は右の列を定義し、負の数は左の列を定義します。

たとえば、上で説明した簡単なコードを書いてみましょう。

  1. まず最初に、移動する範囲を定義する必要があるため、以下のコードを入力します。
    define-the-range
  2. その後、以下のように「.Offset」と入力し、左かっこを入力します。
    type-offset
  3. 次に、移動先の行番号、列番号を入力する必要があります。
    enter-row-and-column number
  4. 最後に、「.Select」を追加して、移動先のセルを選択するように VBA に指示する必要があります。
    add-select-to-tell-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

コメントを追加する

メールアドレスが公開されることはありません。 が付いている欄は必須項目です