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
> 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
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