Excel Vba Copymemory oder wie sonst Listbox füllen

Hallo Wissende,

Sub test()
Dim A As Variant, N As Long, B(10000)
A = Range("A1:A10000")
For N = 1 To 10000
B(N) = A(N, 1)
Next N
ListBox1.List = B
End Sub

A = Range(„A1:A10000“)
ist sehr schnell um einen Zellenbereich einzulesen. anach muß ich aber leider eine Schleife benutzen um aus dem zweidimensionalen A ein eindimensionales B zu machen, denn nur das kann ich in die Listbox einlesen lassen.

Columncount der Listbox auf 2 zu setzen um direkt A einzulesen klappt nicht.

Falls auf diese Art nichts zu machen sein sollte, dachte ich an Copymemory um A nach B zu transferieren.
Sicher nur ein Einzeiler abgesehen von der APi-Deklaration, aber ich kriege den grad nicht hin.

Interessiert bin ich an Ideen/Lösungen für beides, also einmal irgendwie direkt A in die Listbox zu kriegen aber auch wie man das Memory kopiert.

Die Listbox ist in der Tabelle, nicht in einer orm, das müßte aber egal sein, sind beides die identischen Activex-Steuerelemente *sehr glaub*

Da dies eher eine allgemeine VB-Frage ist als eine spezielle für Excel frage ich hier :smile:

Danke ^ Gruß
Reinhard

Grüezi Reinhard

Sub test()
Dim A As Variant, N As Long, B(10000)
A = Range(„A1:A10000“)
For N = 1 To 10000
B(N) = A(N, 1)
Next N
ListBox1.List = B
End Sub

A = Range(„A1:A10000“)
ist sehr schnell um einen Zellenbereich einzulesen. anach muß
ich aber leider eine Schleife benutzen um aus dem
zweidimensionalen A ein eindimensionales B zu machen, denn nur
das kann ich in die Listbox einlesen lassen.

Interessiert bin ich an Ideen/Lösungen für beides, also einmal
irgendwie direkt A in die Listbox zu kriegen aber auch wie man
das Memory kopiert.

Da dies eher eine allgemeine VB-Frage ist als eine spezielle
für Excel frage ich hier :smile:

Ich arntworte dennoch mit einem Einzeiler für Excel, wenns recht ist :wink:

Me.ListBox1.List = Application.WorksheetFunction.Transpose(Range("A1:A10000"))


Mit freundlichen Grüssen

Thomas Ramel

  • MVP für MS-Excel -

A = Range(„A1:A10000“)
ist sehr schnell um einen Zellenbereich einzulesen. anach muß
ich aber leider eine Schleife benutzen um aus dem
zweidimensionalen A ein eindimensionales B zu machen, denn nur
das kann ich in die Listbox einlesen lassen.

Ich arntworte dennoch mit einem Einzeiler für Excel, wenns
recht ist :wink:

Me.ListBox1.List =
Application.WorksheetFunction.Transpose(Range(„A1:A10000“))

Grüezi Thomas,

danke dir, ich kenne zwar transpose, aber ich wäre nie darauf gekommen.
Das liegt auch daran, daß ich da wie wild alles mögliche probiert habe nach A = Range(„A1:A10000“)
msgbox ubound(a,1)
msgbox ubound(a,2)
msgbox a(1,1)
u.v.m. (jetzt aus der Erinnerung so hingeschrieben)

Wäre ich durch all diese Versuche darauf gestoßen daß ich ein Array (10000,1) habe und .List braucht (1,10000) so wäre ich eher vielleicht von selbst auf Transpose gekommen.

Gut, Frage damit erledigt. Copymemory muß ich halt ergoogeln. Alex hat mir zwar schon vor Zeiten da viel zu geschrieben, aber bis ich auf meinem PC was finde bin ich mit googeln schneller.

Und dem hiesigen Archiv bzw. den eigenen Artikeln kann ich leider auch nicht im Entferntesten Bestnoten für Übersichtlichkeit und schnelles Finden geben:frowning:

Gruß
Reinhard