Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Prüfen, ober UserForm schon geöffnet ist

1,752 views
Skip to first unread message

Claudia

unread,
Oct 24, 2005, 10:01:27 AM10/24/05
to
Liebe VBA-Gemeinde,

ich habe hier ein - wie ich dachte kleines - Problem in meiner
Programmierung:

Umgebung: WinXP SP2 mit Office 2000 SP3

Ich habe eine zentrale Makrodatei, die im AutoStart-Verzeichnis
abgelegt ist.
Makros aus zentral.dot verwendeten verschiedene DOTs, die über das
Vorlagenverzeichnis aufgerufen werden.

Folgendes Problem:
In der zentral.dot gibts eine UserForm "Daten", die der Anwender über
eine Schaltfläche aufrufen und ausfüllen kann.
Klickt er auf eine Schaltfläche "Visitenkarte erstellen", wird
automatisch ein Dokument basierend auf visite.dot geöffnet und die
Einträge aus dem Dialogfenster in das Visitenkartenmuster geschrieben.
Soweit so gut.

Als zweiten Weg, kann der User die Vorlage visite.dot direkt über
Datei / Neu aufrufen, dann wird automatisch auch die UserForm aus der
zentral.dot geöffnet.
Klickt er allerdings dann auf die Schaltfläche "Visitenkarte
erstellen" versucht Word beim Laden eines neuen Dokuments wiederum
meine UserForm anzuzeigen und ich lande in einer Schleife.

Ich wollt jetzt mit
' *** Meine UserForm heißt Daten ***
If Daten.Visible = False Then
Load Daten
Daten.Show
End if

ganz einfach beim Aufruf von einem neuen Visiten-Dokument schauen, ob
das Dialogfenster schon offen ist.

Sagt Word aber, Variable nicht definiert.
Scheints mag Word es nicht, dass die UserForm in einer anderen DOT ist.

Leider brauche ich beide Wege zum Erstellen einer Visitenkarte.

Ich sitze hier wohl echt auf der Leitung :-(. Das kann noch nicht so
schwer sein, zu prüfen, ob eine UserForm schon angezeigt wird.

Vielen Dank für Eure Hilfe
Claudia

Christian Freßdorf

unread,
Oct 25, 2005, 2:03:46 AM10/25/05
to
Hallo Claudia,

> Ich sitze hier wohl echt auf der Leitung :-(. Das kann noch nicht so
> schwer sein, zu prüfen, ob eine UserForm schon angezeigt wird.

folgendes prüft Dir alle geladenen Userforms, damit im Hintergrund
weitergearbeit werden kann, muss die Userform aber nicht-modal (vbModeless)
geladen sein:

Sub test5()


' *** Meine UserForm heißt Daten ***

Dim UF As Object ' muss Object sein
If VBA.UserForms.Count = 0 Then
MsgBox "Keine Userform geladen"
Exit Sub
End If
For Each UF In VBA.UserForms
If UF.Name = "Daten" Then
If UF.Visible = False Then
UF.Show
Else
MsgBox "Userform '" & UF.Name & "' ist bereits geladen und wird angezeigt"
End If
End If
Next UF

End Sub

HTH

--
Gruß Christian
~~~~~~~~~~~~
!Gebt Rückmeldung wenn Ihr weiterhin Antworten möchtet!
=> http://www.fruiture.de/perl/questions.html#intro
=> http://word.mvps.org

Claudia

unread,
Oct 25, 2005, 8:17:32 AM10/25/05
to
Hallo Christian,

vielen Dank für den Tipp, das mit dem Object war der Knackpunkt, jetzt
gehts wunderbar mit Deinem - ein bißchen angepassten - Beispiel.

Gruß Claudia

0 new messages