VBA でセルの数式を設定する
- VBA でセルの数式を設定する
- VBA のセルのアドレス
- VBAでセル範囲を選択
- VBAでセルに書き込む
- VBA のセルから読み取る
- VBA でセルを交差させる
- VBA で連続していないセルの値を置き換える
- VBA のセルからのオフセット
- VBA でセル アドレスを参照する
- VBA にすべてのセルを含める
- VBA でセルのプロパティを変更する
- VBA で最後のセルを見つける
- VBA の列で使用されている最後のセルを見つける
- VBAで行で使用されている最後のセルを見つける
- VBA でセル値をコピーして貼り付ける
さまざまなタスクを実現するために VBA で実行できるさまざまなセル関数を例とともに紹介します。
VBA でセルの数式を設定する
Excel のワークシートには、データを保存するためのセルが含まれています。 これらのセルは、ワークシートの行と列を形成するように配置されます。
VBA コーディングには Excel ワークシートのセルを使用しますが、1つ以上のセルを含む範囲を使用します。 VBA セルに関連する重要な機能の一部を次に示します。
- セルのアドレス
- セル範囲
- セルへの書き込み
- セルからの読み取り
- 交差するセル
- 非連続セル
- セルからのオフセット
・セルアドレス参照 - すべてのセルを含む
- セルのプロパティの変更
- 最後のセルを見つける
- 列で使用されている最後の行番号を見つける
- 行で使用されている最後の列番号を見つける
- セルのコピー&ペースト
VBA のセルのアドレス
セルのアドレスは、列の文字の名前を含め、セルの行番号を書き込む A1 表記で識別できます。 VBA では、範囲オブジェクトを含めることができます。
以下に示すように、セル B4
を参照してみましょう。
# vba
MsgBox Range("B4")
出力:
以下に示すように、別のワークシートからセルを参照したい場合は、シートを呼び出してセルを取得することで簡単に呼び出すことができます。
# vba
MsgBox Worksheets("Sheet2").Range("B4")
出力:
以下に示すように、別のワークブックを開き、そのワークブックからワークシートを選択して、目的のセルの値を取得することもできます。
# vba
MsgBox Workbooks("My WorkBook").Worksheets("Sheet2").Range("B2")
セル アドレスを記述する別の方法は、文字 R
と行番号を使用することです。 次に、文字 C
とセルの列番号を書きます。
この方法はR1C1記法
と呼ばれます。 以下に示すように、この表記法を例で使用してみましょう。
#vba
Sub callIt()
Cells(4, 2) = "Added"
End Sub
出力:
VBAでセル範囲を選択
以下の関数Range
に範囲値を与えることで、セルの範囲を選択することもできます。
# vba
Range("A1:B13")
上記の関数を使用して、その範囲に存在するセルのスタイルを変更できます。 以下に示すように、セルの境界線の色をその範囲から変更する例を見てみましょう。
# vba
Sub callIt()
Range("A1:B13").Borders.Color = RGB(255, 0, 255)
End Sub
出力:
上記の例からわかるように、セルの値を指定することにより、範囲関数を使用してスタイルを簡単に変更できます。
VBAでセルに書き込む
特定のセルを編集したり値を追加したりするシナリオはたくさんあります。 VBA を使用すると、セルの値を置き換えたり、セルの値を追加したりするのは非常に簡単です。 range()
関数を使用できます。
次に、range()
関数を使用して、値を追加および変更します。
# vba
Sub callIt()
Range("B4") = "Value Added"
End Sub
値が追加されたら、値を変更します。 そして、以下に示すように、同じセルを置き換えようとします。
# vba
Sub callIt()
Range("B4") = "Value Changed"
End Sub
出力:
Cells
メソッドを使用して同じ機能を実行することもできます。
# vba
Sub callIt()
Cells(4, 2) = "Value"
End Sub
出力:
値の範囲を格納する場合は、単純な変数を使用するよりも配列を使用する方が適切です。
VBA のセルから読み取る
セルから値を読み取りたい場合は、2つの関数を使用できます。 1つは Range
で、もう 1つは Cells
です。 セルのアドレスを呼び出すことで、その値を取得できます。
MsgBox
メソッドを使用して値を表示できます。 例を見てみましょう。最初に Cells
メソッドを使用して B4
の値を取得します。
# vba
Sub callIt()
cellValue = Cells(4, 2)
MsgBox (cellValue)
End Sub
出力:
以下の range()
メソッドを使用して同じことを達成してみましょう。
# vba
Sub callIt()
cellValue = Range("B4")
MsgBox (cellValue)
End Sub
出力:
上記の例からわかるように、これら 2つの関数を使用してセルの値を読み取るのは非常に簡単です。
VBA でセルを交差させる
Excel シートの数式を作成するために VBA で作業しているときに、2つの範囲の交点を見つけて、そこで特定のタスクを実行する必要がある場合があります。 または、これら 2つの範囲の交点に特定の値を配置します。
セル アドレスと VBA の間にはスペースが使用され、交差処理が行われます。
以下に示すように、両方の範囲に共通する範囲セルに値を追加する例を見ていきます。
# vba
Sub callIt()
Range("A1:B10 B1:C10") = "Common Cells"
End Sub
出力:
上記の例からわかるように、2つの範囲間で交差するセル間の値を簡単に追加または置換できます。
VBA で連続していないセルの値を置き換える
連続していないセルの値を置き換える必要がある場合があります。 これは、複数のセルまたは単一のセルの範囲を使用して簡単に行うことができます。
連続していないセルの場合、異なるセル アドレスの間にカンマ (,
) を挿入します。 以下に示すように、特定のセルの値を置き換える例を見てみましょう。
# vba
Sub callIt()
Range("A2,C3,B5") = 10
End Sub
出力:
次に、以下に示すように、連続していない単一のセルの値を変更してみましょう。
# vba
Sub callIt()
Cells(5, 2) = "Hello"
End Sub
出力:
VBA のセルからのオフセット
Excel シートを使用して VBA で作業しているときに、オフセット セル値を取得したり、1つのセル アドレスに基づいてセルの値を置き換えたりする参照セルがある場合があります。
offset
メソッドを使用して、このシナリオをスムーズに実現できます。
以下に示すように、この関数を使用して、range
メソッドを使用して 1 列と 1 行を移動する例を見てみましょう。
# vba
Sub callIt()
Range("A1").Offset(1, 1) = "A1"
End Sub
出力:
次に、以下の Cells
メソッドを使用して同じシナリオを試してください。
# vba
Sub callIt()
Cells(1, 1).Offset(0, 0) = "A1"
End Sub
出力:
ここで、範囲のオフセット値に基づいて複数のセルに値を追加する場合を想像してみましょう。以下に示すようにこれを行うことができます。
# vba
Sub callIt()
Range("A1:B13").Offset(4, 2) = "Completed"
End Sub
出力:
VBA でセル アドレスを参照する
セルのアドレスを取得したい場合は、関数 Address
を使用してすばやく取得できます。 以下に示すように、特定のセルのアドレスを取得しようとする例を見てみましょう。
# vba
Sub callIt()
Set cell = Cells(2, 4)
MsgBox cell.Address
End Sub
出力:
上記の例からわかるように、VBA で address
メソッドを使用して任意のセルのアドレスを簡単に取得できます。
VBA にすべてのセルを含める
すべてのセルからすべてのデータを消去したい場合があります。 このシナリオでは、以下に示すように次のコードを記述できます。
# vba
Sub callIt()
Cells.Clear
End Sub
出力:
上記の例からわかるように、簡単に
VBA でセルのプロパティを変更する
特定のセルのプロパティを変更する必要がある場合があります。 VBA を使用すると、任意のセルのプロパティを簡単に変更できます。
以下に示すように、フォントの色を変更する例を見てみましょう。
# vba
Sub callIt()
Set NewCell = Range("A1")
NewCell.Activate
NewCell.Font.Color = RGB(255, 0, 0)
End Sub
出力:
次に、以下に示すように、セルのフォント ファミリとフォント サイズを変更してみましょう。
# vba
Sub callIt()
Set cell = Range("A1")
cell.Activate
cell.Font.Size = 20
cell.Font.FontStyle = "Courier"
End Sub
出力:
VBA で最後のセルを見つける
列または行の最後のセルを見つけなければならない場合があります。 Row.count
と Column.count
を VBA で使用して、Excel ワークシートの最後の行を見つけることができます。
以下に示すように、例を見て、行と列から最後のセルを見つけてみましょう。
# vba
Sub callIt()
MsgBox ("Last cell row wise in the sheet: " & Rows.Count)
MsgBox ("Last cell column wise in the sheet: " & Columns.Count)
End Sub
出力:
上記の例からわかるように、単純な関数 count
を使用して、行または列の最後のセルを見つけるのは非常に簡単です。
VBA の列で使用されている最後のセルを見つける
格納しているデータの数を把握するために、列で最後に使用されたセルを知りたい場合があります。
以下に示すように、例を見て、特定の列で占有されている最後のセルを見つけてみましょう。
# vba
Sub callIt()
MsgBox (Cells(Rows.Count, "B").End(xlUp).Row)
End Sub
出力:
上記の例からわかるように、最後に使用されたセルを 100% の精度で見つけることができます。 VBA は、これらのものを正確に見つけて、データを失わないための最良の方法です。
VBAで行で使用されている最後のセルを見つける
保存しているデータの数を把握するために、行で最後に使用されたセルを知りたい場合があります。
以下に示すように、例を見て、特定の行で占有されている最後のセルを見つけてみましょう。
# vba
Sub callIt()
MsgBox (Cells(9, Columns.Count).End(xlToLeft).Column)
End Sub
出力:
上記の例からわかるように、最後に使用されたセルを 100% の精度で見つけることができます。 VBA は、これらのものを正確に見つけて、データを失わないための最良の方法です。
VBA でセル値をコピーして貼り付ける
特定の値をあるセルから別のセルにコピー アンド ペーストする必要がある場合があります。 または、以下に示すように、VBA を使用して 1つのシートから別のシートにコピー アンド ペーストすることもできます。
# vba
Sub callIt()
Worksheets("Sheet2").Range("A1:B13").Copy Destination:=Worksheets("Sheet1").Range("A1")
End Sub
出力:
上記の例からわかるように、セルを使用して多くのタスクを実行できます。