Tartalomjegyzék
Míg a munka során VBA az Excelben gyakran kell egy munkalapban string (s) és változó (s) összekapcsolása. A string (s) és változó (s) összekapcsolása széles körben használatos szinte minden területen a munkáinkban, kezdve a diákok eredményeinek összegzésétől egy összetett vállalkozás elemzéséig. Ebben a cikkben megmutatom, hogyan lehet string (s) és változó (s) összekapcsolása egy munkalapban a következővel VBA Excelben. Megfelelő példákkal és illusztrációkkal fogom elmagyarázni a dolgokat.
String (s) és változó (s) összekapcsolása az Excel VBA-ban (gyorsnézet)
Gyakorlati munkafüzet letöltése
Töltse le ezt a gyakorlati munkafüzetet, hogy gyakorolhasson, miközben ezt a cikket olvassa.
String és változó összekapcsolása.xlsmString (s) és változó (s) összekapcsolása az Excel VBA-ban (lépésről lépésre történő elemzés)
Először is, lássuk, hogyan tudjuk a string (s) és a változó (s) összekapcsolását a VBA lépésről lépésre.
⧪ Összekötő karakterlánc(ok):
Két vagy több karakterlánc összekapcsolása a VBA , használhatja mind a számtani, mind a számtani összeadás (+) szimbólum és a ampersand (& ) szimbólum.
Például a következő karakterláncok összekapcsolásához "Nagy várakozások" és "Két város története" egy vessző , használhatja:
New_String = "Nagy várakozások" + ", " + "Két város története"
Vagy,
New_String = "Nagy várakozások" & ", " & "Két város története"
Futtassa a fenti kódok bármelyikét. Megjeleníti az összefűzött kimenetet, Nagy várakozások, Két város története .
⧪ Összekötő változó (s)
Ha az összes változó karakterlánc értékeket tartalmaz, akkor mind az aritmetikai, mind a számtani összeadás (+) szimbólum és a zárójel (&) szimbólum.
De ha nem, akkor csak a zárójel (&) szimbólumot kell összekapcsolni.
Például: Legyen két változó, A és B .
A egy karakterláncot tartalmaz, "Két város története" , és B egy másik karakterláncot tartalmaz, "A szerelem negyven szabálya" .
Használhatja a összeadás (+) szimbólum és zárójel (&) szimbólumot, hogy összekapcsolja őket.
A = "Két város története" B = "A szerelem negyven szabálya" New_String = A + ", " + B
Vagy,
A = "Két város története" B = "A szerelem negyven szabálya" New_String = A & ", " & B
Mindkét esetben az összefűzött karakterláncot adják vissza.
De ha A egy karakterlánc ( "Két város története" ) és B egész szám ( 27 ), akkor a zárójel (&) szimbólumot kell összekapcsolni.
A = "Két város története" B = 27 New_String = A & ", " & B
Visszaadja az összefűzött kimenetet.
Példák a karakterláncok és változók összekapcsolására az Excel VBA-ban (makró, UDF és UserForm bevonásával)
Megtanultuk, hogy a string (s) és a változó (s) összekapcsolását a VBA Ezúttal néhány példát fogunk megvizsgálni, amelyek a string (s) és a változó (s) összekapcsolását tartalmazzák a VBA .
Példa 1: Makró fejlesztése a karakterlánc (s) és a változó (s) Excel VBA-ban történő összekapcsolására
Megtanultuk, hogy a karakterláncok és változók összekapcsolását a VBA . Ezúttal kifejlesztünk egy Makró egy munkalap több oszlopának karakterláncainak és változóinak összekapcsolására.
Itt van egy adathalmazunk könyvnevek , szerzők , és árak a Martin Könyvesbolt nevű könyvesbolt néhány könyvét.
Fejlesszünk ki egy Makró oszlopok összekapcsolása 1, 2, és 3 az adathalmaz B4:D14 cellában F4 .
A VBA kód lesz:
⧭ VBA kód:
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_Number 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 Range(Output_Cell).Cells(i, 1) = Output Next i End Sub
⧭ Kimenet:
Futtassa ezt a kódot. 3 oszlopok összekapcsolva a következő tartományban F4:F14.
További információ: Makró több oszlop összekapcsolására az Excelben (UDF és UserForm segítségével)
Példa 2: Felhasználó által definiált függvény létrehozása a karakterlánc (s) és a változó (s) összekapcsolására az Excel VBA-ban
Megtanultuk, hogy fejlesszünk ki egy Makró egy adathalmaz több oszlopának összekapcsolására. Ezúttal létrehozunk egy Felhasználó által meghatározott funkció a karakterláncok vagy változók Excelben történő összekapcsolásához.
A teljes VBA kód lesz:
⧭ VBA kód:
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 End Function
⧭ Kimenet:
Jelölje ki azt az oszlopot, ahol a tartományt össze kívánja kapcsolni, és adja meg ezt a képletet:
=ConcatenateValues("She", "H. Rider Haggard",", ")
Vissza fog térni Ő, H. Rider Haggard mint kimenet.
Ismét adja meg a képletet:
=ConcatenateValues(B4:B14,30,", ")
[ Array képlet Tehát ne felejtsd el megnyomni a CTRL + SHIFT + ENTER hacsak nem vagy Office 365 .]
A 30-as értéket összekapcsolja a tartomány összes értékével. B4:B14 .
Végül írja be:
=ConcatenateValues(B4:B14,C4:C14,", ")
[Ismét Array képlet Tehát ne felejtsd el megnyomni a CTRL + SHIFT + ENTER hacsak nem vagy Office 365 .]
A program a tartomány összes értékét összekapcsolja a B4:B14 az alábbiakkal C4:C14 .
További információ: Hogyan kell az Excelben összekapcsolni (3 megfelelő módszer)
Hasonló olvasmányok:
- Két vagy több cellából származó szöveg kombinálása egy cellába az Excelben (5 módszer)
- Sorok kombinálása egy cellába az Excelben
- Számok összekapcsolása Excelben (4 gyors képlet)
- Szövegek kombinálása Excelben (8 megfelelő mód)
- Hogyan kell összekapcsolni az Apostrofát az Excelben (6 egyszerű módja)
Példa 3: UserForm fejlesztése a karakterlánc (s) és a változó (s) összekapcsolására egy másik munkalapon az Excel VBA-ban
Megtanultuk, hogy fejlesszünk ki egy Makró és egy Felhasználó által meghatározott funkció a karakterláncok és értékek összekapcsolására. Végül, kifejlesztünk egy UserForm a karakterláncok és értékek összekapcsolása a kívánt munkalap kívánt helyére.
⧪ 1. lépés: A UserForm beillesztése
Menjen a Insert> UserForm opciót a VBA eszköztáron egy új UserForm .
⧪ 2. lépés: Eszközök áthúzása a felhasználói űrlapra
A UserForm a címen. UserForm1 megnyílik, valamint egy Szerszámosláda a címen. Vezérlés .
Mozgassa az egeret a e eszköztárat, és húzzon 2 ListBoxot, 5 TextBoxot, 7 címkét és 1 parancsgombot a UserFormba. .
Módosítsa a kijelzőket a Címkék az ábrán látható módon.
Hasonlóképpen, változtassa meg a kijelzőt a CommandButton a címre. OK .
⧪ 3. lépés: A TextBox1 kódjának megírása
Kattintson duplán a TextBox1 . A Privát alprocedúra a címen. TextBox1_Change A következő kódot írja be.
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
⧪ 4. lépés: A TextBox3 kódjának megírása
Hasonlóképpen, kattintson duplán a TextBox3 . egy másik Privát alprocedúra a címen. TextBox3_Change A következő kódot írja be.
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 Task: x = 5 End Sub
⧪ 5. lépés: A TextBox4 kódjának megírása
Kattintson duplán a TextBox3 . egy másik Privát alprocedúra a címen. TextBox3_Change A következő kódot írja be.
Private Sub TextBox4_Change() If UserForm1.TextBox3.Text "" Then Selection.Cells(1, 1) = UserForm1.TextBox4.Text End If End Sub
⧪ 6. lépés: A ListBox2 kódjának megírása
Ezután kattintson duplán a ListBox2 . Amikor a Privát alprocedúra a címen. ListBox2_Click megnyílik, írja be ezt a kódot.
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 If If UserForm1.TextBox3.Text "" Then Selection.Cells(1, 1) = UserForm1.TextBox4.Text End If End If End Sub
⧪ 7. lépés: A CommanButton1 kódjának megírása
Kattintson duplán a CommandButton1 . Miután a Privát alprocedúra a címen. CommandButton1_Change megnyílik, illessze be oda a következő kódot.
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+1.End 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 If Next j Worksheets(Sheet_Name).Range(Output_Cell).Cells(i, 1) = Output Next i Unload UserForm1 Exit Sub Message:MsgBox "Válassza ki az összes lehetőséget helyesen.", vbExclamation End Sub
⧪ 7. lépés: Kód írása a UserForm futtatásához
Most következik az utolsó lépés. Szúrjon be egy új Modul a VBA eszköztárat, és illessze be a következő kódot.
Sub Run_UserForm() UserForm1.Caption = "Értékek összekapcsolása" 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
⧪ 8. lépés: A UserForm futtatása
Az Ön UserForm A futtatáshoz válassza ki az adathalmazt a munkalapról (beleértve a Fejlécek ) és futtassa a Makró a címen. Run_UserForm .
A UserForm betöltődik az összes opcióval együtt. A kiválasztott tartomány címe megjelenik a TextBox1 ( B3:D4 itt). Ha kívánja, megváltoztathatja. A munkalapon a kiválasztott tartomány megváltozik.
Válassza ki az összefűzni kívánt oszlopokat a Konkattálandó oszlopok ListBox. Itt kiválasztottam Könyv neve és Ár .
Adja meg a Elválasztó . Itt adtam be egy vessző ( , ).
Válassza ki a munkalap nevét, ahová az összefűzött tartományt szeretné helyezni a Összekapcsolva In listabox. Itt beírtam Sheet3 .
(Abban a pillanatban, amikor kiválasztja a lapot, az aktiválódik, még akkor is, ha nem ez az aktív lap.)
Ezután helyezze be a Kimenet helye Ez az összekapcsolt tartomány első cellájának a cellahivatkozása. Itt a B3 .
(Abban a pillanatban, amikor belép a Kimenet helye , a kimeneti tartomány lesz kiválasztva).
Végül pedig adja meg a nevét a Kimeneti fejléc (A kimeneti tartomány fejlécében). Itt a Összekapcsolt tartomány .
(Abban a pillanatban, amikor a Kimeneti fejléc , a kimeneti oszlop fejléce lesz beállítva.).
Kattintson a címre. OK A kívánt kimenetet a kívánt helyen fogja megkapni.
További információ: Hogyan lehet egy karakterláncot és egy egész számot a VBA segítségével összekapcsolni?
Következtetés
Íme néhány példa, ahol az Excel-t használhatja. VBA a karakterláncok és változók összekapcsolására. Remélem, a példák mindent eléggé érthetővé tettek számodra. Van kérdésed? Kérdezz bátran. És ne felejtsd el meglátogatni az oldalunkat. ExcelWIKI további posztokért és frissítésekért.