Verkettung von String und Variable in Excel VBA (Eine detaillierte Analyse)

  • Teile Das
Hugh West

Bei der Arbeit mit VBA in Excel müssen wir oft Zeichenkette(n) und Variable(n) in einem Arbeitsblatt verketten. Die Verkettung von Zeichenkette(n) und Variable(n) ist in fast allen Bereichen unserer Arbeit weit verbreitet, angefangen von der Zusammenfassung der Ergebnisse von Studenten bis hin zur Analyse eines komplexen Unternehmens. In diesem Artikel zeige ich Ihnen, wie Sie Zeichenkette(n) und Variable(n) in einem Arbeitsblatt verketten können mit VBA Ich werde die Dinge mit geeigneten Beispielen und Illustrationen erklären.

Verkettung von String(s) und Variable(n) in Excel VBA (Schnellansicht)

Download Arbeitsbuch Praxis

Laden Sie dieses Übungsheft herunter, um zu üben, während Sie diesen Artikel lesen.

Verkettung von String und Variable.xlsm

Verkettung von String(s) und Variable(n) in Excel VBA (Schritt-für-Schritt-Analyse)

Zunächst wollen wir sehen, wie wir String (s) und Variable (s) in VBA Schritt für Schritt.

⧪ Verkettung von Zeichenfolge(n):

Zum Verketten von zwei oder mehr Zeichenketten in VBA können Sie sowohl die arithmetische Addition (+) und das Symbol Ampersand (& ) Symbol.

Zum Beispiel, um die Zeichenketten zu verketten "Große Erwartungen" und "Eine Geschichte aus zwei Städten" mit einer Komma können Sie verwenden:

 New_String = "Große Erwartungen" + ", " + "Ein Märchen aus zwei Städten" 

Oder,

 New_String = "Große Erwartungen" & ", " & "Ein Märchen aus zwei Städten" 

Führen Sie einen der obigen Codes aus, und Sie erhalten die verkettete Ausgabe, Große Erwartungen, Eine Geschichte aus zwei Städten .

⧪ Verkettung von Variablen (s)

Wenn alle Variablen String-Werte enthalten, können Sie sowohl die arithmetische Addition (+) und das Symbol Ampersand (&) Symbol.

Wenn dies nicht der Fall ist, dann können Sie nur die Ampersand (&) Symbol für die Verkettung.

Ein Beispiel: Wir haben zwei Variablen, A und B .

A enthält eine Zeichenkette, "Eine Geschichte aus zwei Städten" und B eine andere Zeichenfolge enthält, "Die vierzig Regeln der Liebe" .

Sie können sowohl die Addition (+) Symbol und Ampersand (&) Symbol, um sie zu verketten.

 A = "Eine Geschichte aus zwei Städten" B = "Die vierzig Regeln der Liebe" New_String = A + ", " + B 

Oder,

 A = "Eine Geschichte aus zwei Städten" B = "Die vierzig Regeln der Liebe" New_String = A & ", " & B 

In beiden Fällen wird die verkettete Zeichenfolge zurückgegeben.

Aber wenn A ist eine Zeichenkette ( "Eine Geschichte aus zwei Städten" ) und B eine ganze Zahl ist ( 27 ), müssen Sie die Ampersand (&) Symbol für die Verkettung.

 A = "Eine Geschichte aus zwei Städten" B = 27 Neuer_String = A & ", " & B 

Es wird die verkettete Ausgabe zurückgegeben.

Beispiele für die Verkettung von Strings und Variablen in Excel VBA (unter Einbeziehung von Makro, UDF und UserForm)

Wir haben gelernt, Zeichenkette(n) und Variable(n) zu verketten mit VBA Diesmal werden wir einige Beispiele für die Verkettung von Zeichenfolgen (s) und Variablen (s) mit VBA .

Beispiel 1: Entwicklung eines Makros zur Verkettung von Zeichenkette(n) und Variable(n) in Excel VBA

Wir haben gelernt, Zeichenketten und Variablen zu verketten mit VBA Dieses Mal werden wir eine Makro zur Verkettung von Zeichenfolgen und Variablen mehrerer Spalten in einem Arbeitsblatt.

Hier haben wir einen Datensatz mit Buchnamen , Autoren und Preise von einigen Büchern einer Buchhandlung namens Martin Bookstore.

Entwickeln wir eine Makro zum Verketten von Spalten 1, 2, und 3 des Datensatzes B4:D14 in der Zelle F4 .

Die VBA Code sein wird:

⧭ VBA-Code:

 Sub Concatenate_String_and_Variable() Dim Rng As Range Set Rng = Range("B4:D14") Dim Column_Numbers() As Variant Column_Numbers = Array(1, 2, 3) Separator = ", " Output_Cell = "F4" For i = 1 To Rng.Rows.Count Output = "" For j = LBound(Column_Numbers) To UBound(Column_Numbers If j UBound(Column_Numbers) Then Output = Output & Rng.Cells(i, Int(Column_Numbers(j)))& Trennzeichen Else Output = Output & Rng.Cells(i, Int(Column_Numbers(j))) End If Next j Range(Output_Cell).Cells(i, 1) = Output Next i End Sub 

⧭ Ausgabe:

Führen Sie diesen Code aus. Sie erhalten die 3 verkettete Spalten im Bereich F4:F14.

Weiterlesen: Makro zur Verkettung mehrerer Spalten in Excel (mit UDF und UserForm)

Beispiel 2: Erstellen einer benutzerdefinierten Funktion zum Verketten von String (s) und Variable (s) in Excel VBA

Wir haben gelernt, eine Makro um mehrere Spalten eines Datensatzes zu verketten. Diesmal erstellen wir eine Benutzerdefinierte Funktion zur Verkettung von Zeichenfolgen oder Variablen in Excel.

Die vollständige VBA Code sein wird:

⧭ VBA-Code:

 Function ConcatenateValues(Value1, Value2, Separator) If VarType(Value1) 8204 And VarType(Value2) 8204 Then ConcatenateValues = Value1 & Separator & Value2 ElseIf VarType(Value1) = 8204 And VarType(Value2) 8204 Then Dim Output1() As Variant ReDim Output1(Value1.Rows.Count - 1, 0) For i = 1 To Value1.Rows.Count Output1(i - 1, 0) = Value1.Cells(i, 1) &Separator & Value2 Next i ConcatenateValues = Output1 ElseIf VarType(Value1) = 8204 And VarType(Value2) = 8204 Then Dim Output2() As Variant ReDim Output2(Value1.Rows.Count - 1, 0) For i = 1 To Value1.Rows.Count Output2(i - 1, 0) = Value1.Cells(i, 1) & Separator & Value2.Cells(i, 1) Next i ConcatenateValues = Output2 End If End Function 

⧭ Ausgabe:

Wählen Sie die Spalte aus, in der Sie den Bereich verketten möchten, und geben Sie diese Formel ein:

=Verknüpfungswerte("Sie", "H. Rider Haggard",", ")

Es wird zurückkehren Sie, H. Rider Haggard als Ausgabe.

Geben Sie erneut die Formel ein:

=Verkettung von Werten(B4:B14,30,", ")

[ Array-Formel Vergessen Sie also nicht, die Taste STRG + UMSCHALT + EINGABE es sei denn, Sie sind in Büro 365 .]

Es wird 30 mit allen Werten des Bereichs verkettet B4:B14 .

Geben Sie schließlich ein:

=Verkettung von Werten(B4:B14,C4:C14,", ")

[Erneut Array-Formel Vergessen Sie also nicht, die Taste STRG + UMSCHALT + EINGABE es sei denn, Sie sind in Büro 365 .]

Es werden alle Werte des Bereichs verkettet B4:B14 mit denen von C4:C14 .

Lesen Sie mehr: Verkettung in Excel (3 geeignete Methoden)

Ähnliche Lektüre:

  • Kombinieren von Text aus zwei oder mehr Zellen in einer Zelle in Excel (5 Methoden)
  • Zeilen in einer Zelle in Excel kombinieren
  • Zahlen in Excel verketten (4 Schnellformeln)
  • Kombinieren von Text in Excel (8 geeignete Methoden)
  • Verkettung von Apostrophen in Excel (6 einfache Möglichkeiten)

Beispiel 3: Entwickeln einer UserForm zur Verkettung von String(s) und Variable(n) in einem anderen Arbeitsblatt in Excel VBA

Wir haben gelernt, eine Makro und eine Benutzerdefinierte Funktion um Zeichenketten und Werte zu verknüpfen. Schließlich entwickeln wir ein UserForm um Zeichenketten und Werte an der gewünschten Stelle des gewünschten Arbeitsblatts zu verketten.

⧪ Schritt 1: Einfügen der UserForm

Gehen Sie zum Einfügen> UserForm Option in der VBA Symbolleiste zum Einfügen eines neuen UserForm .

⧪ Schritt 2: Ziehen von Werkzeugen auf die UserForm

A UserForm genannt. BenutzerFormular1 wird geöffnet, zusammen mit einer Werkzeugkasten genannt. Kontrolle .

Bewegen Sie die Maus über die e Toolbox und ziehen Sie 2 ListBoxes, 5 TextBoxes, 7 Labels und1 CommanButtons in das UserForm .

Ändern Sie die Anzeigen der Etiketten wie in der Abbildung dargestellt.

Ändern Sie in ähnlicher Weise die Anzeige der CommandButton zu OK .

⧪ Schritt 3: Schreiben von Code für TextBox1

Doppelklick auf TextBox1 . A Private Unterprozedur genannt. TextBox1_Ändern Geben Sie dort den folgenden Code ein.

 Private Sub TextBox1_Change() On Error GoTo Task Range(UserForm1.TextBox1.Text).Select UserForm1.ListBox1.Clear For i = 1 To Range(UserForm1.TextBox1.Text).Columns.Count UserForm1.ListBox1.AddItem Range(UserForm1.TextBox1.Text).Cells(1, i) Next i Exit Sub Task: x = 5 End Sub 

⧪ Schritt 4: Schreiben von Code für TextBox3

In ähnlicher Weise doppelklicken Sie auf TextBox3 . eine andere Private Unterprozedur genannt. TextBox3_Ändern Geben Sie dort den folgenden Code ein.

 Private Sub TextBox3_Change() On Error GoTo Task Starting_Cell = UserForm1.TextBox3.Text For i = 1 To Len(Starting_Cell) If Asc(Mid(Starting_Cell, i, 1))>= 48 And Asc(Mid(Starting_Cell, i, 1)) <= 57 Then Col = Left(Starting_Cell, i - 1) Row = Right(Starting_Cell, Len(Starting_Cell) - i + 1) End_Range = Col + Right(Str(Int(Row) +Range(UserForm1.TextBox1.Text).Rows.Count - 1), Len(Str(Int(Row) + 10)) - 1) Set Rng = Range(Starting_Cell + ":" + End_Range) Rng.Select Exit For End If Next i Rng.Cells(1, 1) = UserForm1.TextBox4.Text Exit Sub Aufgabe: x = 5 End Sub 

⧪ Schritt 5: Schreiben von Code für TextBox4

Doppelklicken Sie außerdem auf TextBox3 . eine andere Private Unterprozedur genannt. TextBox3_Ändern Geben Sie dort den folgenden Code ein.

 Private Sub TextBox4_Change() If UserForm1.TextBox3.Text "" Then Selection.Cells(1, 1) = UserForm1.TextBox4.Text End If End Sub 

⧪ Schritt 6: Code für ListBox2 schreiben

Doppelklicken Sie dann auf ListBox2 Wenn die Private Unterprozedur genannt. ListBox2_Klick öffnet, geben Sie dort diesen Code ein.

 Private Sub ListBox2_Click() Reserved_Address = Selection.Address For i = 0 To UserForm1.ListBox2.ListCount - 1 If UserForm1.ListBox2.Selected(i) = True Then Worksheets(UserForm1.ListBox2.List(i)).Activate Range(Reserved_Address).Select Exit For End If Next i If UserForm1.TextBox3.Text "" Then Selection.Cells(1, 1) = UserForm1.TextBox4.Text End If End Sub 

⧪ Schritt 7: Code für CommanButton1 schreiben

Doppelklicken Sie außerdem auf BefehlSchaltfläche1 Nach der Private Unterprozedur genannt. CommandButton1_Change öffnet, fügen Sie dort den folgenden Code ein.

 Private Sub CommandButton1_Click() On Error GoTo Message Dim Rng As Range Set Rng = Worksheets(UserForm1.TextBox5.Text).Range(UserForm1.TextBox1.Text) Dim Column_Numbers() As Variant Count = 0 For i = 0 To UserForm1.ListBox1.ListCount - 1 If UserForm1.ListBox1.Selected(i) = True Then ReDim Preserve Column_Numbers(Count) Column_Numbers(Count) = i + 1 Count = Count + 1End If Next i Separator = UserForm1.TextBox2.Text Output_Cell = UserForm1.TextBox3.Text For i = 0 To UserForm1.ListBox2.ListCount-1 If UserForm1.ListBox2.Selected(i) = True Then Sheet_Name = UserForm1.ListBox2.List(i) Exit For End If Next i Worksheets(Sheet_Name).Range(Output_Cell).Cells(1, 1) = UserForm1.TextBox4.Text For i = 2 To Rng.Rows.Count Output = "" For j= LBound(Column_Numbers) To UBound(Column_Numbers) If j UBound(Column_Numbers) Then Output = Output & Rng.Cells(i, Int(Column_Numbers(j)) & Separator Else Output = Output & Rng.Cells(i, Int(Column_Numbers(j))) End If Next j Worksheets(Sheet_Name).Range(Output_Cell).Cells(i, 1) = Output Next i Unload UserForm1 Exit Sub Message:MsgBox "Wählen Sie alle Optionen korrekt aus.", vbExclamation End Sub 

⧪ Schritt 7: Schreiben des Codes zum Ausführen der UserForm

Jetzt kommt der letzte Schritt: Fügen Sie eine neue Modul von der VBA Symbolleiste und fügen Sie den folgenden Code ein.

 Sub Run_UserForm() UserForm1.Caption = "Werte verknüpfen" UserForm1.TextBox1.Text = Selection.Address UserForm1.TextBox5.Text = ActiveSheet.Name UserForm1.ListBox1.ListStyle = fmListStyleOption UserForm1.ListBox1.BorderStyle = fmBorderStyleSingle UserForm1.ListBox1.MultiSelect = fmMultiSelectMulti UserForm1.ListBox1.Clear For i = 1 To Selection.Columns.Count UserForm1.ListBox1.AddItemSelection.Cells(1, i) Next i UserForm1.ListBox2.ListStyle = fmListStyleOption UserForm1.ListBox2.BorderStyle = fmBorderStyleSingle For i = 1 To Sheets.Count UserForm1.ListBox2.AddItem Sheets(i).Name Next i Load UserForm1 UserForm1.Show End Sub 

⧪ Schritt 8: Ausführen der UserForm

Ihr UserForm Um es auszuführen, wählen Sie den Datensatz auf dem Arbeitsblatt aus (einschließlich der Option Kopfzeilen ) und führen Sie die Makro genannt. Run_UserForm .

Die UserForm wird mit allen Optionen geladen. Die ausgewählte Bereichsadresse wird auf TextBox1 ( B3:D4 Wenn Sie es wünschen, können Sie es ändern. Der ausgewählte Bereich im Arbeitsblatt wird geändert.

Wählen Sie die Spalten, die Sie zusammenfassen möchten, aus der Liste Zu konkurrierende Spalten ListBox, hier habe ich Buch Name und Preis .

Geben Sie die Abscheider Hier habe ich eine Komma ( , ).

Wählen Sie den Namen des Arbeitsblatts, in das Sie den verketteten Bereich aus der Liste Verkettet in Hier habe ich Folgendes eingegeben Blatt3 .

(In dem Moment, in dem Sie das Blatt auswählen, wird es aktiviert, auch wenn es nicht das aktive Blatt ist).

Setzen Sie dann die Ausgabeort Es ist die Zellreferenz der ersten Zelle des verketteten Bereichs. Hier habe ich B3 .

(In dem Moment, in dem Sie die Ausgabeort wird der Ausgabebereich ausgewählt).

Und schließlich geben Sie den Namen des Ausgang Kopfzeile (Kopfzeile des Ausgabebereichs). Hier habe ich Verketteter Bereich .

(In dem Moment, in dem Sie die Ausgang Kopfzeile wird die Überschrift der Ausgabespalte gesetzt).

Klicken Sie auf OK So erhalten Sie die gewünschte Ausgabe am gewünschten Ort.

Lesen Sie mehr: Verkettung von String und Integer mit VBA

Schlussfolgerung

Dies sind einige Beispiele, bei denen Sie Excel verwenden können VBA um Strings und Variablen zu verketten. Ich hoffe, die Beispiele haben Ihnen alles klar gemacht. Wenn Sie Fragen haben, können Sie uns diese gerne stellen. Und vergessen Sie nicht, unsere Website zu besuchen ExcelWIKI für weitere Beiträge und Aktualisierungen.

Hugh West ist ein äußerst erfahrener Excel-Trainer und -Analyst mit über 10 Jahren Erfahrung in der Branche. Er verfügt über einen Bachelor-Abschluss in Rechnungswesen und Finanzen sowie einen Master-Abschluss in Betriebswirtschaft. Hugh hat eine Leidenschaft für das Unterrichten und hat einen einzigartigen Lehransatz entwickelt, der leicht zu befolgen und zu verstehen ist. Seine Expertenkenntnisse in Excel haben Tausenden von Studenten und Berufstätigen auf der ganzen Welt geholfen, ihre Fähigkeiten zu verbessern und in ihrer Karriere herausragende Leistungen zu erbringen. Über seinen Blog teilt Hugh sein Wissen mit der Welt und bietet kostenlose Excel-Tutorials und Online-Schulungen an, um Einzelpersonen und Unternehmen dabei zu helfen, ihr volles Potenzial auszuschöpfen.