Registriert seit: 30.10.2014
Version(en): 2013
Hallo VBA Genies, beim Stöbern in eurem Forum bin ich auf folgenden Code zur Auffüllung einer Textbox gestoßen: Code: TextBox1 = Join(Application.Transpose(Range("A1:A10").Value), vbLf)
Dieser Code ist einfach und super. Das Problem: Ich bräuchte so etwas kurzes und knappes für 2 Spalten, also A und B. Der Inhalt der Textbox soll dann so aussehen: Inhalt Zelle A1 Inhalt Zelle B1 Inhalt Zelle A2 Inhalt Zelle B2 usw.
Registriert seit: 14.04.2014
Version(en): 2003, 2007
Hallo,
das dürfte nur mit einer Schleife möglich sein.
Man kann die Inhalte erst in einem Aerray sammeln, dann dieses Array auf die gleiche Art in die Textbox schreiben. Da, wo den Code gefunden hast, solltest Du auch den Weg über Arrays finden.
Gruß Atilla
Registriert seit: 14.04.2014
Version(en): 2003, 2007
Hallo nochmal, Auf folgender Seite findest Du einiges zu Feldern und Arrays. Über Join müsste da auch etwas zu finden sein, glaube ich: www.online-excel.de
Gruß Atilla
Registriert seit: 17.04.2014
Version(en): MS Office 365(32)
Hallo, ich finde es schon grenzwertig, eine TextBox mit einer Spalte zu füllen. Dafür und erst recht für mehrere Spalten ist eine ListBox die 1. Wahl. Zu Arrays guckst Du: Felder - Arrays (1) - Einführung und LBound/UBoundGruß Uwe
Registriert seit: 30.10.2014
Version(en): 2013
Hallo Uwe, möchte nochmal nachfragen warum du den Code Code: TextBox1 = Join(Application.Transpose(Range("A1:A10").Value), vbLf)
für "grenzwertig" hältst. Schließlich stammt er doch von dir selbst. vgl. den Thread Steuerung der Anzeige einer Textbox durch Zeilenauswahl. Was ich suche ist eigentlich nur einen möglichst effizienten Code der mir abwechselnd die Inhalte aus den Spalten von A1 bis B10 in einer Textbox untereinanderschreibt.
Registriert seit: 17.04.2014
Version(en): MS Office 365(32)
27.11.2014, 00:59
(Dieser Beitrag wurde zuletzt bearbeitet: 27.11.2014, 01:00 von Kuwer.)
Hallo, ich hielt nirgendwo meinen Code für grenzwertig. Und wie Atilla schon schrieb, geht es da nicht ohne Schleifen. Ich muss aber zugeben, dass ich das mit dem zeilenweisen Anordnen der Spalten überlas. Code: Sub MehrereSpaltenZeilenweiseInTextbox() Dim i As Long, j As Long Dim varQ As Variant, varZ() As Variant varQ = Range("A1:B9").Value ReDim varZ(1 To UBound(varQ, 1) * UBound(varQ, 2)) For i = 1 To UBound(varQ, 1) For j = 1 To UBound(varQ, 2) varZ(i * UBound(varQ, 2) - UBound(varQ, 2) + j) = varQ(i, j) Next j Next i TextBox1 = Join(varZ, vbNewLine) End Sub
Gruß Uwe
Registriert seit: 30.10.2014
Version(en): 2013
Hallo, zunächst einmal vielen Dank für den Code. Funktioniert, soweit alles super. Aber ich möchte die Dinge auch gerne verstehen und frage mich schlicht und einfach wie man diese Codezeile herleiten könnte. Code: varZ(i * UBound(varQ, 2) - UBound(varQ, 2) + j) = varQ(i, j)
Muss man so etwas als Programmierer einfach wissen? Bevor einige Routiniers anfangen zu gähnen, so trivial finde ich die Umwandlung eines 2 dimensionalen in ein 1 dimensionales Feld nicht.
Registriert seit: 17.04.2014
Version(en): MS Office 365(32)
Hallo, wenn das zu kompliziert wird, kann man auch einfach eine weitere Variable als normalen Zähler einsetzen. Das ist vermutlich sogar performanter. Aber mächtig gewaltig sieht die erste Variante schon aus. Code: Sub MehrereSpaltenZeilenweiseInTextbox_2() Dim i As Long, j As Long, k As Long Dim varQ As Variant, varZ() As Variant varQ = Range("A1:B9").Value ReDim varZ(1 To UBound(varQ, 1) * UBound(varQ, 2)) For i = 1 To UBound(varQ, 1) For j = 1 To UBound(varQ, 2) k = k + 1 varZ(k) = varQ(i, j) Next j Next i TextBox1 = Join(varZ, vbNewLine) End Sub
Gruß Uwe
Registriert seit: 16.08.2014
Version(en): 2013
Hallo, anbei eine ultraleichte Methode der alternierenden Textboxauffüllung aus den Spalten A und B, mittels Verwendung einer leicht abgeänderten arithmetrischen Reihe und des Mod-Operators: Code: Sub Textboxauffüllung() For i = 1 To 20 TextBox1 = TextBox1 & " " & Cells(Int((i + 1) * 0.5), (i - 1) Mod 2 + 1).Value & vbLf Next i End Sub
(TextBox1 vorher auf Multiline stellen, nicht vergessen)
Folgende(r) 1 Nutzer sagt Danke an ratrad für diesen Beitrag:1 Nutzer sagt Danke an ratrad für diesen Beitrag 28
• SonjaFido
Registriert seit: 30.10.2014
Version(en): 2013
Hallo Leute, habe gerade mal etwas Code ausprobiert. Dabei ist mir aufgefallen, dass ein spaltenweises Textbox auffüllen wie beschrieben einwandfrei funktioniert, nicht aber ein zeilenweises. Wieso? Code: 'Spaltenweise funktioniert: TextBox1 = Join(Application.Transpose(Range("A1:A10").Value), vbLf) 'Zeilenweise funktioniert nicht: Wieso? Ist doch eigentlich das Gleiche! TextBox1 = Join((Range("A1:F1").Value), vbLf)
|