Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

ComboBox mit Zahlen von 1 bis 1048576 füllen

Forumthread: ComboBox mit Zahlen von 1 bis 1048576 füllen

ComboBox mit Zahlen von 1 bis 1048576 füllen
09.03.2013 08:41:49
1
Hallo an alle!
Wie kann ich, möglichst schnell und ohne das System zu überlasten eine ComboBox mit den Zahlen von 1 bis 1048576 füllen. Mit einer For/Next-Schleife hat Excel sehr lange damit zu tun und es erscheint ständig Keine Rückmeldung.
Ich hoffe, Ihr habt einen Tipp für mich.
Gruß,
Kasimir

Anzeige

15
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: ComboBox mit Zahlen von 1 bis 1048576 füllen
09.03.2013 08:47:24
1
HAllo
Versuch mal so:
Sub machs()
    Dim arr(1 To 1048576)
    Dim L As Long
    For L = 1 To 1048576
        arr(L) = L
    Next
    ComboBox1.List = arr
End Sub


Das geht so schnell das du es nichtmal merkst...
ransi

Anzeige
AW: ComboBox mit Zahlen von 1 bis 1048576 füllen
09.03.2013 08:57:26
1
Hi
das Problem ist nicht die For-Next-Schleife, sondern das .AddItem.
man kann aber auch ein Array mit den Werten befüllen und dann dieses Array der Combobox zuweisen, was wesentlich schneller geht:
Dim i As Long
Dim x(1 To 2 ^ 20)
For i = 1 To UBound(x)
x(i) = i
Next
ComboBox1.List = x
Gruß Daniel

Anzeige
AW: ComboBox mit Zahlen von 1 bis 1048576 füllen
09.03.2013 09:39:37
1
Hallo ransi, hallo Daniel!
Danke Euch für Eure Antworten. Genau das habe ich gesucht.
Ich hätte da aber noch eine Frage. Diese hat allerdings nichts mit der eigentlichen Fragestellung dieses Beitrags zu tun. Und zwar möchte ich in einer UserForm einen Dateiexplorer nachempfinden. Der Benutzer soll in diesem Dateiexplorer einen Pfad auswählen und diesen ausgewählten Pfad benötige ich dann in einer String-Variablen. Gibt es dafür ein Steuerelement und geht soetwas?
Nochmals danke und Gruß,
Kasimir

Anzeige
AW: ComboBox mit Zahlen von 1 bis 1048576 füllen
09.03.2013 10:18:05
1
Hi
ein Steuerelement gibt es nicht, aber du kannst diesen Code verwenden, um einen Pfad auswählen zu lassen und den Pfad in eine Stringvariable zu schreiben:
Dim x As String
With Application.FileDialog(msoFileDialogFolderPicker)
.Show
If .SelectedItems.Count = 1 Then x = .SelectedItems(1)
End With
gruß Daniel

Anzeige
AW: ComboBox mit Zahlen von 1 bis 1048576 füllen
09.03.2013 10:19:36
1
Hallo,
wenn du das Array nicht als Variant sondern als Long deklarierst (Dim arr(1 To 1048576) As Long) ist das Ganze um 25% schneller.
Warum willst du das Rad neu erfinden? Um eine Datei auszuwählen gibt es GetOpenFilename und den FileDialog. Wenn du die nicht willst, solltest du dein Vorhaben etwas näher beschreiben.
Gruß
Nepumuk

Anzeige
AW: ComboBox mit Zahlen von 1 bis 1048576 füllen
09.03.2013 15:49:20
1
Hallo Daniel, hallo Nepumuk!
Danke Euch für Eure Hilfe. Die Varianten mit Application.FileDialog und GetOpenFilename sind mir bekannt. Dort wird allerdings immer jeweils ein eigenes Dialogfenster aufgerufen. Ich dachte es gibt ein Steuerelement, dass ich in meine UserForm einbetten kann und über das ich, ohne ein weiteres Dialogfenster öffnen zu lassen, einen Pfad auswählen kann. Mein Vorhaben ist, eine UserForm zu erzeugen, in dass ich diverse Dinge vorab auswählen muss und hier sollte ein Pfad ausgewählt werden, wie im Dateiexplorer. Wenn es so etwas nicht gibt, dann werde ich eine der beiden von Euch vorgeschlagenen Versionen nutzen müssen.
Danke nochmal für Eure Unterstützung,
Kasimir

Anzeige
AW: ComboBox mit Zahlen von 1 bis 1048576 füllen
09.03.2013 16:18:58
1
Hallo,
ein fertiges Control gibt es nicht. Für die Auswahl eines Ordners würde ich das TreeView-Control nutzen. Dazu musst du dann das komplette ausgewählte Laufwerk nach Ordnern durchsuchen. Was, je nach Größe, schon mal 30 Sekunden und länger dauern kann (ist halt VBA und nicht C).
Gruß
Nepumuk

Anzeige
AW: ComboBox mit Zahlen von 1 bis 1048576 füllen
09.03.2013 16:43:49
1
Hallo Nepumuk!
Danke Dir für die erneute Antwort. Schade, ich dachte da gibt es ein fertiges Steuerelement. Na dann werde ich es über eine von Euch vorgeschlagenen Varianten realisieren.
Danke nochmal für die Hilfe und ein schönes WE,
Kasimir

WebBrowser als Explorer
09.03.2013 17:54:03
ransi
Hallo Kasimir
Ein bischen was geht immer...
Mit dem WebBrowser-Steuerelement kann man (nicht ich) sowas nachbilden.
Schau es dir mal an:
https://www.herber.de/bbs/user/84269.xlsm
ransi

Anzeige
Is ja Irre, wow ... :-) owT
09.03.2013 18:19:40
Matthias

AW: Is ja Irre, wow ... :-) owT
09.03.2013 19:06:28
mumpel
Hallo!
Nur die Detail-Darstellung wäre vorteilhafter.
Gruß, René

das stimmt, hab ich aber noch nicht gekannt :-) oT
09.03.2013 19:12:59
Matthias

Anzeige
Detail-Darstellung
11.03.2013 15:47:28
Anton
ist auch möglich, etwa so:
WebBrowser1.Document.currentviewmode = 4

mfg Anton

AW: Detail-Darstellung
12.03.2013 19:13:09
ransi
HAllo
Ich habs geahnt !
Der Anton kriegt die Detailansicht mit nem Einzeiler hin ;-)
ransi

AW: Detail-Darstellung
13.03.2013 10:09:18
mumpel
Sehr gut. Vielleicht auch noch interessant: Steuerelement WebBrowser
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

ComboBox mit Zahlen von 1 bis 1048576 füllen


Schritt-für-Schritt-Anleitung

Um eine ComboBox in Excel mit Zahlen von 1 bis 1048576 zu füllen, kannst du folgenden VBA-Code verwenden:

Sub machs()
    Dim arr(1 To 1048576) As Long
    Dim L As Long
    For L = 1 To 1048576
        arr(L) = L
    Next
    ComboBox1.List = arr
End Sub

Dieser Code erstellt ein Array mit den Zahlen von 1 bis 1048576 und weist es der ComboBox zu. Dies ist eine effektive Methode, um eine große Anzahl von Zahlen schnell zu befüllen, ohne das System zu überlasten.


Häufige Fehler und Lösungen

  1. Problem: Excel zeigt "Keine Rückmeldung" an. Lösung: Verwende ein Array, um die Zahlen zu speichern, bevor du sie der ComboBox zuweist. Das ist schneller als die Verwendung von .AddItem.

  2. Problem: Das Array ist als Variant deklariert. Lösung: Deklariere das Array als Long, um die Performance um bis zu 25% zu steigern:

    Dim arr(1 To 1048576) As Long

Alternative Methoden

Eine alternative Methode zur Befüllung der ComboBox ist die Verwendung einer For-Schleife, um die Werte in ein Variant-Array zu speichern, und dann das Array der ComboBox zuzuweisen:

Dim i As Long
Dim x(1 To 2 ^ 20) As Long
For i = 1 To UBound(x)
    x(i) = i
Next
ComboBox1.List = x

Diese Methode kann ebenfalls sehr schnell sein und ist eine gute Lösung, wenn Du mit großen Datenmengen arbeitest.


Praktische Beispiele

Hier sind zwei Beispiele, wie du die ComboBox in einer UserForm verwenden kannst:

  1. Einfaches Beispiel:
Private Sub UserForm_Initialize()
    Dim i As Long
    Dim arr(1 To 1048576) As Long
    For i = 1 To 1048576
        arr(i) = i
    Next
    ComboBox1.List = arr
End Sub
  1. Beispiel mit Auswahl eines Ordners:

Wenn du zusätzlich einen Ordnerpfad auswählen möchtest, kannst du den folgenden Code verwenden:

Dim x As String
With Application.FileDialog(msoFileDialogFolderPicker)
    .Show
    If .SelectedItems.Count = 1 Then x = .SelectedItems(1)
End With

Tipps für Profis

  • Vermeide unnötige Variablen: Halte deinen Code so schlank wie möglich, um die Ausführungsgeschwindigkeit zu erhöhen.
  • Nutze das TreeView-Control: Wenn du einen Dateiexplorer in deiner UserForm nachbilden möchtest, könnte das TreeView-Control nützlich sein, um Ordnerstrukturen anzuzeigen.
  • VBA-Optimierung: Überlege dir, ob du den Code in kleinere Subroutinen aufteilen kannst, um die Lesbarkeit und Wartbarkeit zu verbessern.

FAQ: Häufige Fragen

1. Kann ich die Anzahl der Zahlen in der ComboBox reduzieren?
Ja, du kannst das Array anpassen, indem du die obere Grenze änderst, z.B. Dim arr(1 To 1000) As Long.

2. Wie kann ich die ComboBox nach der Auswahl eines Wertes verwenden?
Du kannst das ComboBox1.Value-Ereignis nutzen, um die Auswahl zu verarbeiten, z.B.:

Private Sub ComboBox1_Change()
    MsgBox "Du hast ausgewählt: " & ComboBox1.Value
End Sub

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige