Vba を使用して文字列を連結するにはどうすればよいですか?
VBA コードを使用して 2 つの文字列を連結するには、アンパサンドを使用する必要があります。 2 つの文字列の間にアンパサンドを使用してそれらを結合し、この新しい値をセル、変数、またはメッセージ ボックスに割り当てることができます。同様に、3 つ以上の値を連結することもできます。
後でそれを理解するために簡単な例を見ていきます。
VBA を使用して連結する手順
- まず、二重引用符を使用して最初の文字列を入力します。
- その後、アンパサンドを入力します。
- 次に、二重引用符を使用して 2 番目のテキストを入力します。
- 最後に、この値をセルまたは変数に割り当てるか、メッセージ ボックスを使用して値を確認します。
Sub vba_concatenate() Range("A1") = "Mike" & "Ross" End Sub
区切り文字で連結する
3 番目のアンプサンドを追加するだけで、2 つの文字列の間に区切り文字を使用することもできます。次のコードを考えてみましょう。
Range("A1") = "Mike" & "-" & "Ross"
上記のコードでは、2 つの文字列に区切り文字を使用し、アンパサンドだけを使用してそれらを結合しました。したがって、基本的に、何かを囲む必要がある場合は常に、その中にアンパサンドを使用する必要があります。
変数を使用して連結する
値を変数に保存し、これら 2 つの変数の値を連結することもできます。次のコードを考えてみましょう。
上記のコードでは、変数として宣言された変数があり、これらの変数に値を割り当てています。最後に、アンパサンドを使用して 3 つの変数を結合し、その結果をセル A1 に割り当てました。
VBAを使用して範囲を連結する
VBA を使用して、セル範囲の値を連結することもできます。次のマクロを考えてみましょう。
Sub vba_concatenate() Dim rng As Range Dim i As String Dim SourceRange As Range Set SourceRange = Range("A1:A10") For Each rng In SourceRange i = i & rng & " " Next rng Range("B1").Value = Trim(i) End Sub
上記のコードでは、 FOR NEXT (For ループ)を使用して、連結する範囲をループしました。
したがって、範囲 (A1:A10) 内の各セルに移動して、その値を変数 I に格納し、アンパサンドを使用して各反復で値を連結します。最後に、結合チャンネルをレンジ B1 に設定します。
そして、次のコードは、選択した範囲の値を連結します。範囲を選択してコードを実行するだけです。
Dim rng As Range Dim i As String For Each rng In Selection i = i & rng & " " Next rng Range("B1").Value = Trim(i)
列全体または行全体を連結する
列全体または行全体を連結したい場合は、loop メソッドを使用しないことをお勧めします。行全体または列全体を結合できる「TextJoin」ワークシート関数を使用できます (次のコードを考えてください)。
'join values from column A. Dim myRange As Range Dim myString As String Range("B1") = WorksheetFunction.TextJoin(" ", True, Range("A:A")) 'join values from row 1. Dim myRange As Range Dim myString As String Range("B1") = WorksheetFunction.TextJoin(" ", True, Range("1:1"))