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

UserForm_Initialize wird nicht ausgeführt

Forumthread: UserForm_Initialize wird nicht ausgeführt

UserForm_Initialize wird nicht ausgeführt
20.01.2003 21:36:13
Robert B.
Hallo Zusammen,

ich habe da ein Problem, dass ich mir nicht erklären kann.

Ich habe eine Arbeitsmappe mit einer Userform erstellt.
Die Userform starte ich über eine Schaltfläche auf Tabelle1
mit frmDaten.Show
Nach UserForm_Initialize()
lese ich die Aktive Zeile in eine Variable ein und fülle dann die Textboxen mit den entsprechenden Werten.

Das ganze funktioniert auch ganz gut bis auf eine Einschränkung,
die ich mir nicht erklären kann.

Problem:
z.B. Beim Speichern und schließen der Arbeitsmappe
ist eine Zelle in der Zeile 14 aktiv.

Wenn ich die Datei erneut öffne und eine Zelle in einer anderen
Zeile markiere und daraufhin die Userform starte und die entsprechen Felder wie zuvor gezeigt füllen möchte, werden aber die Werte aus der beim Start aktiven Zeile 14 angezeigt.
Obwohl ich eine andere Zeile ausgewählt habe.
Im Einzelschrittmodus habe ich festgestellt, dass der
Sub UserForm_Initialize nicht ausgeführt wird.

Wenn ich allerdings die Userform nochmals schließe und erneut aufrufe, wird der Sub UserForm_Initialize ausgeführt und die Daten aus der richtigen Zeile eingelesen.

Wo liegt der Fehler oder wie kann ich erzwingen, dass gleich die richtigen Daten eingelesen werden?

Schon mal vielen Dank für Eure Hilfe

Gruß Robert





Anzeige

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Re: UserForm_Initialize wird nicht ausgeführt
20.01.2003 22:02:08
L.Vira
Hast du schon mal TakeFocusOnClick des Button auf False eingestellt?
Re: UserForm_Initialize wird nicht ausgeführt
20.01.2003 22:02:59
Michael Scheffler
Hallo,

Du solltest trotz allem eine Form immer mit Load laden und dann mit Show anzeigen:

Private Sub CommandButton1_Click()
Load frmTest
frmTest.Show
End Sub

Das Laden nur mit Show führt nur dazu, dss Du die Anzahl der Instanzen Deiner Form nicht überblickst. Außerdem ist Deine aktive Zelle je die Deines Buttons, folgendes funktioniert bei mir

Option Explicit
Private Sub UserForm_Initialize()
txtTes = Cells(1, 1)
End Sub


Gruß

Micha

Anzeige
Mensch Ludwig, die richtige Vermutung und...
20.01.2003 22:07:27
Michael Scheffler
verrate uns doch außerdem bitte zum Abschluss des Tages, wie Du ohne Kunstgriffe einfach nur mit den Eigenschaften Modal = True oder False unter Excel 97 nichtmodale Fensterchen hinbekommst.

Lass uns bitte nicht dumm sterben!!!

Gruß

Micha

Re: Mensch Ludwig, die richtige Vermutung und...
20.01.2003 22:12:54
L.Vira
Übrigens der mit der Demokratie war schon super, hab noch Stunden später heimlich gekichert.
Das geht nur mit API und einem Trick, der nirgends dokumentiert ist und ein reines Zufallsprodukt. Allein mit API kann man zwar
in der Tabelle hantieren, aber keine Formatierungen u.Ä. machen.
Allerdings gibt es wirklich eine riesige Einschränkung, das Verschieben von Zellen führt manchmal zum Absturz.
Anzeige
Re: UserForm_Initialize wird nicht ausgeführt
20.01.2003 22:16:44
Robert B.
Hallo Micha und L.Vira,

TakeFocusOnClick ist auf False und Load frmDaten habe ich auch schon ausprobiert.

txtText= Cells(1,1) hilft mir nicht, da die Zeile jeweils
Variabel bleiben soll.

Gruß Robert

Re: UserForm_Initialize wird nicht ausgeführt
20.01.2003 22:24:00
L.Vira
Die leidigen controls in Tabellen...
Versuchs mal(nur zum Test) mit einem Button aus "Formular".
Anzeige
Re: UserForm_Initialize wird nicht ausgeführt
20.01.2003 22:33:10
Robert B.
Hallo L.Vira,

das hat leider auch nicht geholfen.

Da steckt der Teufel drin!

Gruß Robert

Re: UserForm_Initialize wird nicht ausgeführt
20.01.2003 22:36:03
L.Vira
Und statt initial... activate?
Re: UserForm_Initialize wird nicht ausgeführt
20.01.2003 22:54:47
Robert B.
Hallo L.Vira,

1000 Dank!!
Ich glaube das war die Lösung.

Ich werden noch einige weitere Tests durchführen.

Noch eine Frage:
Ist bei der Verwendung von UserForm_Activate etwas zu beachten beim einlesen der Daten in die Textboxen oder verhält sich die Userform gleich(natürlich mit dem Unterschied, dass jetzt die richtigen Daten eingelesen werden).


Vielen Dank Robert

Anzeige
Re: UserForm_Initialize wird nicht ausgeführt
20.01.2003 23:15:16
L.Vira
Lies dir doch dazu mal die Hilfe durch, das wird zuviel zum Posten.
Re: UserForm_Initialize wird nicht ausgeführt
20.01.2003 23:20:49
Robert B.
Hallo L.Vira,

die Hilfe habe ich selbstverständlich vorher gelesen.
Ich meinte eher Hinweise die vielleicht nicht gerade dokumentiert sind.

Aber mach Dir keine mühe mehr.

Das wichtigste ist, das Problem ist gelöst.

Vielen Dank

Gruß Robert

Anzeige
;
Anzeige

Infobox / Tutorial

UserForm_Initialize in Excel VBA richtig verwenden


Schritt-für-Schritt-Anleitung

  1. UserForm erstellen: Öffne Excel und erstelle eine neue UserForm. Füge die benötigten Steuerelemente wie TextBoxen und Buttons hinzu.

  2. Private Sub UserForm_Initialize() hinzufügen:

    • Klicke auf die UserForm und öffne den Code-Editor.
    • Füge den folgenden Code ein:
    Private Sub UserForm_Initialize()
       ' Lese aktive Zelle aus und fülle die TextBoxen
       Dim aktiveZeile As Long
       aktiveZeile = ActiveCell.Row
       txtTextBox1.Value = Cells(aktiveZeile, 1).Value
       txtTextBox2.Value = Cells(aktiveZeile, 2).Value
    End Sub
  3. UserForm anzeigen: Stelle sicher, dass du die UserForm mit Load lädst und dann mit Show anzeigst:

    Private Sub CommandButton1_Click()
       Load frmDaten
       frmDaten.Show
    End Sub
  4. Fehlerbehebung: Wenn UserForm_Initialize nicht ausgeführt wird, überprüfe, ob der Button den Fokus hat. Setze die Eigenschaft TakeFocusOnClick des Buttons auf False.

  5. Testen: Speichere die Datei, schließe sie und öffne sie erneut. Teste die UserForm mit verschiedenen aktiven Zellen.


Häufige Fehler und Lösungen

  • Fehler: UserForm_Initialize wird nicht ausgeführt.

    • Lösung: Stelle sicher, dass du die UserForm mit Load lädst und nicht nur mit Show. Überprüfe auch, ob der Button, der die UserForm öffnet, den Fokus hat.
  • Fehler: Daten aus der falschen Zeile werden angezeigt.

    • Lösung: Verwende UserForm_Activate anstelle von UserForm_Initialize. Dies könnte helfen, die richtigen Daten anzuzeigen, wenn die UserForm geöffnet wird.

Alternative Methoden

Wenn UserForm_Initialize nicht die gewünschten Ergebnisse liefert, kannst du folgende Alternativen ausprobieren:

  • UserForm_Activate: Anstatt die Daten im UserForm_Initialize zu laden, kannst du sie im UserForm_Activate laden. Beispiel:

    Private Sub UserForm_Activate()
       Dim aktiveZeile As Long
       aktiveZeile = ActiveCell.Row
       txtTextBox1.Value = Cells(aktiveZeile, 1).Value
       txtTextBox2.Value = Cells(aktiveZeile, 2).Value
    End Sub
  • Verwendung von globalen Variablen: Wenn die Zeile, aus der du die Daten lesen möchtest, variabel ist, kannst du eine globale Variable setzen, bevor die UserForm geöffnet wird.


Praktische Beispiele

Hier ist ein einfaches Beispiel, wie du die UserForm nutzen kannst:

Private Sub CommandButton1_Click()
    Load frmDaten
    frmDaten.Show
End Sub

Private Sub UserForm_Activate()
    Dim aktiveZeile As Long
    aktiveZeile = ActiveCell.Row
    txtTextBox1.Value = Cells(aktiveZeile, 1).Value
    txtTextBox2.Value = Cells(aktiveZeile, 2).Value
End Sub

In diesem Beispiel lädt die UserForm die Werte der aktiven Zeile in die TextBoxen, sobald sie aktiviert wird.


Tipps für Profis

  • Vermeide Mehrfachinstanzen: Stelle sicher, dass du die UserForm nur dann lädst, wenn sie nicht bereits geladen ist. Dies hilft, unerwartete Ergebnisse zu vermeiden.

  • Debugging: Nutze den Debugger, um zu überprüfen, ob deine Variablen die erwarteten Werte haben. Setze Haltepunkte und überprüfe die Werte während der Ausführung.

  • Modularisieren: Halte die Logik zum Befüllen der TextBoxen in einer separaten Subroutine, um den Code übersichtlicher zu gestalten.


FAQ: Häufige Fragen

1. Was ist der Unterschied zwischen UserForm_Initialize und UserForm_Activate? UserForm_Initialize wird beim Laden der UserForm aufgerufen, während UserForm_Activate aufgerufen wird, wenn die UserForm aktiv wird. Letzteres ist nützlich, wenn du sicherstellen möchtest, dass die aktuellen Daten immer geladen werden.

2. Wie kann ich verhindern, dass die UserForm mehrere Instanzen hat? Verwende die Load-Anweisung, um die UserForm zu laden, und überprüfe, ob sie bereits geladen ist, bevor du sie erneut lädst. So behältst du die Kontrolle über die Instanzen.

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