Live-Forum - Die aktuellen Beiträge
Datum
Titel
29.03.2024 13:14:12
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1716to1720
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Vba:String zusammenfügen

Vba:String zusammenfügen
07.10.2019 16:17:00
Christian
Grüßt euch,
Ich versuche gerade mehere Wörter in einem String zusammen zu fügen.
Die Wörter in Zelle 3,6 bis 3,8 stehen dort immer und dieser Vorgang funktioniert auch gut.
Nach Zelle 3,8 können noch beliebig viele weitere Wörter eingefügt werden.
Diese sollen bei vorhandensein mit in den String eingelesen werden.
Wie gehe ich das am besten an?
Das untenstehende Makro fügt die 3 Begriffe bereits zusammen und schreibt jedesmal die Definiton davor.
Für die dynamisch hinzukommenden Wörter ab Zelle 3,9 soll lediglich durch ein "," getrennt jeder neue Namen eingelesen werden.
Sub Nameneinlesen()
Dim Reg As Worksheet
Set Reg = ThisWorkbook.Worksheets("Regression")
Dim Y As Variant 'Name des Abhängigen Wertes
Dim rf As String 'Names des Risikolosen Zinses
Dim X1 As String 'Name des Xi-ten Wertes
Dim Bez As String 'Gesamte Namensbezeichnung
Y = Reg.Cells(3, 6).Value
rf = Reg.Cells(3, 7).Value
X1 = Reg.Cells(3, 8).Value
Bez = "Y=" & Y & ";rf=" & rf & ";Xi=" & X1 & "," & .....(hier soll durch komma getrennt  _
jeder weitere Begriff dynamisch auftauchen)
MsgBox Bez
End Sub
Vielen Dank
Grüße
Christian

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Vba:String zusammenfügen
07.10.2019 16:27:41
ChrisL
Hi Christian
Hier ein Muster:
Dim lZ As Long
lZ = Reg.Cells(Rows.Count, 3).End(xlUp).Row
If lZ > 9 Then MsgBox Join(Application.Transpose(Reg.Range("C9:C" & lZ)), ",")
cu
Chris
AW: Vba:String zusammenfügen
07.10.2019 16:51:03
Christian
Hi ChrisL
Danke für den Vorschlag.
Mich würde noch interessieren warum du den Wertebereich transponierst.
Und ist die IF Abfrage ein eigenständiger Vorgang, der meinen bestehenden String "Bez" ergänzt?
In meiner Tabelle stehen an der Stelle "F6" immer ein Wort, an der Stelle "G6" immer ein Wort und an stelle "H6" immer ein Wort.
Nun kann durch manuelles hinzufügen, beliebig viele Wörter in den Zellen "I6", "J6", "K6" usw. ein Wort hinzugefügt werden.
Diese Worte sollen dem String Bez angehängt werden. Und zwar ohne den bereits bestehenden Teil zu löschen.
Bez = "Y=" & Y & ";rf=" & rf & ";X1=" & X1

Grüße
Christian
Anzeige
AW: Vba:String zusammenfügen
07.10.2019 17:16:18
Daniel
HI
JOIN kann immer nur ein eindimensionales Array zu einem Text zusammenfassen.
die Arrays, die durch Auslesen eines Zellbereichs entstehen, sind aber immer zweidimensional und können daher von JOIN nicht verarbeitet werden.
dies gilt auch, wenn die Arrays nur aus einer Zeile oder einer Spalte bestehen, sie sind formal zweidimensional.
jetzt ist es aber so, dass nach einem Worksheetfunction.Transpose das Array auch als eindimensionales Array erkannt wird, wenn es aus einer Zeile besteht.
allerdings müsstest du hier das Transpose 2x hintereinander ausführen, denn dein Ausgangsarray besteht schon aus einer Zeile.
Nach dem ersten Transponieren bestünde es aus einer Spalte und das kann das JOIN auch nicht verarbeiten.
nach dem zweiten Transponieren hast du dann die passende Form (wenn der Ausgangszellbereich schon aus einer Zeile besteht)
ist er Ausgangszellbereich eine Spalte, reicht einmaliges Transponieren.
Gruß Daniel
Anzeige
AW: Vba:String zusammenfügen
07.10.2019 17:31:15
Christian
Hi Daniel,
klingt kompliziert. Ganz verstanden habe ich es nicht.
Ich habe das Problem nun anderst gelöst. Funktioniert wie es soll.
Lediglich die Definitonen vor den einzelnen Wörtern fehlen hier. Das ist aber nicht so tragisch.

'Schreibt die einzelnen Namen der Indizes aus Tabellenblatt "Regression" in einen Array.
ReDim einzelneWorte(AnzahlSpaltenR)
For i = 1 To UBound(einzelneWorte)
einzelneWorte(i) = Reg.Cells(3, 5 + i).Value
Next
'Fügt die einzelnen Worte des Arrays zu einem Text zusammen.
Bez = Join(einzelneWorte, "; ")
'Fügt die Bezeichnung im Tabellenblatt "Sonstige Daten" ein.
SonstD.Cells(letzteZeileSD, 6).Offset(1, 1) = Bez
End Sub
Schönen Abend
Christian
Anzeige
AW: Vba:String zusammenfügen
07.10.2019 18:19:52
ChrisL
Hi Christian
Ich habe Zeilen und Spalten verwechselt (C9:Cn anstelle F3:n3). Entsprechend müsstest du für die Ermittlung des relevanten Bereichs die letzte Spalte ermitteln.
lS = Reg.Cells(3, Columns.Count.End(xlToLeft).Column
Gemäss Erklärung Daniel, den Bereich vor dem Join zweifach transponieren. Die If-Then Prüfung war nur zur Sicherheit, denn für Join braucht es mehrere Werte.
Die For-Next-Schleife scheint mir in deinem Fall kein Nachteil (Laufzeit kaum spürbar), weshalb ich dabei bleiben würde.
Für den letzten Schritt siehe Antwort von Matthias.
Bez = "Y=" & Y & ";rf=" & rf & ";Xi=" & X1
Bez = Bez & ", " & Join(...)
cu
Chris
Anzeige
AW: Vba:String zusammenfügen
07.10.2019 18:34:14
ChrisL
Klammer fehlt
lS = Reg.Cells(3, Columns.Count).End(xlToLeft).Column
Bez = Bez & ...
07.10.2019 16:28:26
Matthias
Hallo
Probiers mal so:

Bez = "Y=" & Y & ";rf=" & rf & ";Xi=" & X1
Bez = Bez & ", Dein weiterer Text"
Gruß Matthias
AW: Bez = Bez & ...
07.10.2019 16:53:51
Christian
Hi Matthias,
das ganze sollte dynamisch funtkionieren. Ohne das ich jedesmal den neuen Text dort einfügen muss.
Also Excel soll erkennen, dass nun anstatt 3 Spalten 4 vorhanden sind und den 4 Wert neu an den bereits bestehenden String anfügen.
Mir geht es nur darum, wie ich das dynamische hinzufügen durch "join" programmieren kann.
Anzeige

33 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige