Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Array von einem Module an eine UserForm übergeben

Forumthread: Array von einem Module an eine UserForm übergeben

Array von einem Module an eine UserForm übergeben
23.03.2009 10:15:06
einem
Hallo Excelianer,
in einem Modul erstelle ich ein zweidimensionales Array dim array(1 to 2, 1 to 100) as string, in dem ich bestimmte Delta-Daten zusammenstelle, um sie später in einer UserForm zu bearbeiten.
Wie kann ich dieses Array an die UserForm übergeben, so dass mir dort die Daten zur Verfügung stehen?
Bezüglich miener Aussage: Excel gut - VBA gut"Ich denke, ich stehe momentan einfach auf dem "Schlauch".
Für jede Hilfe bin ich dankbar
...bruno
Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Array von einem Module an eine UserForm übergeben
23.03.2009 10:26:37
einem
Hallo,
definiere es außerhalb einer Prozedur als Public.
Gruß
Dierk
AW: Array von einem Module an eine UserForm übergeben
23.03.2009 10:37:14
einem
Hallo,
Deklariere diese in einem Modul auserhalb einer Sub als Public

Option Explicit
Public myArray(1 To 2, 1 To 100) As String


Hebe diese aber nach nichtgebrauch wieder auf, weil diese im Speicher verbleiben.
Erase myArray
PS: verwende nicht Array, dieser Begriff ist schon im VBA reserviert, besser wie oben gezeigt myArray
Gruß Tino

Anzeige
AW: Array von einem Module an eine UserForm übergeben
23.03.2009 10:39:39
einem
Hi.
Abgehen von den globalen Variablen kann Du auch ein Sub im UserForm erstellen, an das Du den Array übergibst. Du rufst dann eben nicht das UserForm direkt auf, sondern das Sub im Userform (dort muss dann allerdings das Show erfolgen).
Gruss, Jogy
AW: Array von einem Module an eine UserForm übergeben
23.03.2009 11:00:18
einem
Hi Dierk, Jogy, Tino,
herzlichen Dank für die superschnelle Hilfe!
Ich habe alle Ratschläge befolgt, alles läuft einwandfrei!
Noch ein Mal danke!
...bruno
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Array von einem Modul an eine UserForm übergeben


Schritt-für-Schritt-Anleitung

  1. Deklariere das Array: Um ein zweidimensionales Array in einem Modul zu erstellen, musst du es als Public deklarieren. Das sorgt dafür, dass das Array in anderen Teilen deines VBA-Projekts verfügbar ist.

    Option Explicit
    Public myArray(1 To 2, 1 To 100) As String
  2. Daten ins Array einfügen: Fülle das Array mit den gewünschten Daten, die du später in der UserForm verwenden möchtest.

    myArray(1, 1) = "Daten 1"
    myArray(1, 2) = "Daten 2"
  3. Erstelle eine Subroutine in der UserForm: Innerhalb deiner UserForm kannst du eine Subroutine definieren, die das Array entgegennimmt.

    Public Sub LoadData(arr As Variant)
       ' Hier kannst du das Array verwenden
    End Sub
  4. Rufe die UserForm auf und übergebe das Array: Wenn du die UserForm anzeigst, rufe die Subroutine auf und übergebe das Array.

    UserForm1.LoadData myArray
    UserForm1.Show
  5. Speicherbereinigung: Wenn das Array nicht mehr benötigt wird, kannst du den Speicher mit Erase freigeben.

    Erase myArray

Häufige Fehler und Lösungen

  • Fehler: "Variable nicht definiert"
    Lösung: Stelle sicher, dass das Array als Public deklariert ist und sich im richtigen Modul befindet.

  • Fehler: UserForm zeigt keine Daten an
    Lösung: Überprüfe, ob die Subroutine in der UserForm korrekt aufgerufen wird und ob das Array tatsächlich Daten enthält.


Alternative Methoden

Du kannst auch auf globale Variablen verzichten und stattdessen Parameter an die Subroutine in der UserForm übergeben. Dadurch bleibt der Code flexibler und übersichtlicher. Hier ist ein Beispiel:

Public Sub ShowFormWithArray()
    Dim tempArray(1 To 2, 1 To 100) As String
    ' Fülle tempArray mit Daten
    UserForm1.LoadData tempArray
    UserForm1.Show
End Sub

Praktische Beispiele

Angenommen, du möchtest ein Array von Namen an eine UserForm übergeben:

Public myArray(1 To 2, 1 To 100) As String

Sub FillArray()
    myArray(1, 1) = "Max"
    myArray(1, 2) = "Moritz"
    UserForm1.LoadData myArray
    UserForm1.Show
End Sub

In der UserForm könntest du eine ListBox verwenden, um die Namen anzuzeigen.


Tipps für Profis

  • Vermeide die Verwendung des Begriffs "Array": Da dieser Begriff in VBA bereits reserviert ist, verwende stattdessen beschreibende Namen wie myArray oder dataArray.
  • Nutze Erase: Vergiss nicht, das Array zu leeren, wenn du es nicht mehr benötigst, um Speicherlecks zu vermeiden.
  • Organisiere deinen Code: Halte die Deklaration des Arrays und die Logik zum Laden der Daten klar getrennt, um die Wartbarkeit zu erhöhen.

FAQ: Häufige Fragen

1. Wie kann ich ein Array in einer UserForm anzeigen?
Du kannst eine ListBox oder TextBox verwenden, um die Daten des Arrays darzustellen. Übergebe das Array an eine Subroutine, die die Daten in die Steuerelemente lädt.

2. Was passiert mit dem Array, wenn die UserForm geschlossen wird?
Das Array bleibt im Speicher, bis du es mit Erase aufräumst. Wenn du es nicht mehr benötigst, ist es wichtig, den Speicher freizugeben.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige