Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema CheckBox
BildScreenshot zu CheckBox CheckBox-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema CommandButton
BildScreenshot zu CommandButton CommandButton-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema Userform
BildScreenshot zu Userform Userform-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema Label
BildScreenshot zu Label Label-Seite mit Beispielarbeitsmappe aufrufen

Problem mit Userform

Betrifft: Problem mit Userform von: Regne
Geschrieben am: 30.07.2014 10:39:57

Hallo,
Ich habe ein Problem mit einer UserForm diese wird mit folgendem VBA Code gestartet.

Private Sub Workbook_Open()
 
Application.ScreenUpdating = False
 Application.Visible = False
 Application.ScreenUpdating = True
 Load UserForm4
 UserForm4.Show
 End Sub


Private Sub Workbook_Activate()
 UserForm4.Show (vbModeless)
 End Sub



Diese Userform enthält folgende Codes:
Private Sub CommandButton1_Click()
 Application.ScreenUpdating = True
 Application.Visible = True
 Application.ScreenUpdating = True
 vFile = "N:\Bericht\Wartung\Datei 1.xls"
 Workbooks.Open Filename:=vFile, ReadOnly:=True
 UserForm4.Hide
 bolShowUseform = True
 End Sub

Private Sub CommandButton2_Click()
 If Not MsgBox("Wollen Sie das Formular wirklich schließen?", _
 vbYesNo, "Formular schließen") = vbYes Then
 Cancel = True
 Else
 Application.DisplayAlerts = False
 Workbooks.Close
 Application.Quit
 Application.DisplayAlerts = True
 End If
 
End Sub

Private Sub CommandButton3_Click()
 Load UserForm3
 UserForm3.Show
 End Sub

Private Sub CommandButton4_Click()
 Load UserForm2
 UserForm2.Show
 End Sub

Private Sub CommandButton5_Click()
 Application.ScreenUpdating = True
 Application.Visible = True
 Application.ScreenUpdating = True
 vFile = "N:\Bericht\Wartung\Datei 2.xls"
 Workbooks.Open Filename:=vFile, ReadOnly:=True
 UserForm4.Hide
 bolShowUseform = True
 End Sub

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
 
If CloseMode = vbFormControlMenu Then
 MsgBox _
 "Schließen Sie die UserForm über die Schaltfläche Beenden!", _
 vbInformation
 Cancel = True
 End If

 End Sub


Function IsWorkbookOpen(strWB As String) As Boolean
On Error Resume Next
IsWorkbookOpen = Not Workbooks(strWB) Is Nothing
End Function
Private Sub UserForm_Initialize()
 If IsWorkbookOpen("Datei1.xls") Then
 Application.ScreenUpdating = False
 Application.Visible = False
 Application.EnableEvents = False
 Workbooks("Datei1.xls").Close SaveChanges = False
 ElseIf IsWorkbookOpen("Datei2.xls") Then
 Application.ScreenUpdating = False
 Application.Visible = False
 Application.EnableEvents = False
 Workbooks("Datei2.xls").Close SaveChanges = False
 End If
 End Sub

Jetzt kommt mein Problem wenn ich diese Datei1 oder Datei2 öffne, will ich das die UserForm4 wieder gestartet wird ohne das die Datei1 oder Datei2 gespeichert wird.
Codes von Datei1
Private Sub Workbook_Open()
 ActiveSheet.EnableAutoFilter = True
 End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
 Application.ScreenUpdating = False
 Application.Visible = False
 Application.ScreenUpdating = True
 Workbooks("Datei3.xls").Sheets("Tabelle1").Activate
 End Sub


Gibt es hier eine Lösung für?
Also die UserForm 4 dient als Startseite, in dieser UserForm findet die Auswahl statt auf was man zugreifen möchte. Sobald halt Datei1 oder Datei2 wieder geschlossen werden soll wieder nur die UserForm4 sichtbar sein von der Datei3. Dies kann auch so Erfolgen das die Datei3 geschlossen wird und beim beenden von Datei1 oder Datei2 wieder gestartet wird jedoch habe ich das noch nicht hinbekommen...

  

Betrifft: keine Lösung, wer anders bitte, aber Hinweis von: Oberschlumpf
Geschrieben am: 30.07.2014 11:33:23

Hi #Name?

wäre das Uploaden + Zeigen (d)einer (Bsp)datei nicht effektiver?

Ciao
Thorsten


  

Betrifft: AW: keine Lösung, wer anders bitte, aber Hinweis von: Regne
Geschrieben am: 30.07.2014 11:55:25

https://www.herber.de/bbs/user/91781.xls
https://www.herber.de/bbs/user/91782.xls
https://www.herber.de/bbs/user/91783.xls
Hier sind die drei Dateien natürlich anonymisiert


  

Betrifft: AW: Problem mit Userform von: fcs
Geschrieben am: 30.07.2014 12:45:13

Hallo Regne,

das Ganze ist noch ein wenig unübersichtlich.

1. Bei dir wird Userform4 in der
Workbook_Open und in der Workbook_Activate per .Show angezeigt
In Workbook_Open solltest du diese Anweisung weglassen können, Activate wird beim Öffnen der Datei nach der Open-Prozedur ebenfalls ausgeführt wird.

2. Das Automatische Starten von Userform4 ind Datei3.xls beim Schließen von Datei1.xls oder Datei2.xls da hier ein Interessenkonflickt zwischen den Makros entsteht.

Eigentlich sollte die Anzeige des Userforms über das Activate-Ereignis funktionieren. Möglicherweise wird dies verhindert, weil du die Visible-Eigenschaft der Anwendung auf False setzt.

Der Hund könnte aber auch hier bergraben sein:

Private Sub UserForm_Initialize()
 If IsWorkbookOpen("Datei1.xls") Then
   Application.ScreenUpdating = False
   Application.Visible = False
   Application.EnableEvents = False
   Workbooks("Datei1.xls").Close SaveChanges = False
 ElseIf IsWorkbookOpen("Datei2.xls") Then
   Application.ScreenUpdating = False
   Application.Visible = False
   Application.EnableEvents = False
   Workbooks("Datei2.xls").Close SaveChanges = False
 End If
 End Sub

Die Ereignis Makros werden vorm dem Schließen der Dateien deaktiviert, aber danach nicht wieder aktiviert!!!

Als 1. solltest du nach dem Schließen der Dateien jeweils eine Zeile
Application.EnableEvents = True
einfügen


Ansonsten evtl. auch mal folgendes probieren:
'Code in Datei3.xls unter DieseArbeitsmappe
Private Sub Workbook_Activate()
  UserForm4.Show vbModeless
End Sub

Private Sub Workbook_Open()
  Load UserForm4
  'UserForm4.Show
End Sub



'Code in einem allgemeinen Modul von Datei3.xls
Sub UF4_anzeigen()
  UserForm4.Show vbModeless
End Sub



'Code in Datei1.xls unter "DieseArbeitsmappe"
Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Me.Saved = True 'Status setzen - Datei wird ohne Speichern/Rückfrage geschlossen
    'Userform in Datei3.xls anzeigen - evtl. vorher prüfen, ob Datei3.xls geöffnet ist.
    Application.Run "Datei3.xls!UF4_anzeigen"
End Sub
Gruß
Franz


  

Betrifft: AW: Problem mit Userform von: Regne
Geschrieben am: 30.07.2014 13:28:26

Vielen, Vielen Dank es funktioniert soweit... Nur eine Frage und zwar fragt er mich trotz Me.Saved = False ob er Speichern soll ich will jedoch nicht speichern da er die Dateien nur schreibgeschütz öffnet...
Liebe Grüße


  

Betrifft: AW: Problem mit Userform von: fcs
Geschrieben am: 30.07.2014 14:53:01

Hallo Regne,

du musst in der Workbook_BeforeClose
Me.Saved = True
setzen, wenn die Excel-Sicherheitsabfrage bei den schreibgeschütz geöffneten Dateien nicht angezeigt werden soll - nicht False.

Hatte ich in meinem Beispiel auch so drin.
Aber nicht vergessen: Wenn du die Makros angepasst hast, dann musst du die Datei speichern bevor du sie schließt oder die Ereignismakros vorübergehend deaktivieren. Andernfalls werden diese Änderungen nicht gespeichert.

Gruß
Franz


  

Betrifft: AW: Problem mit Userform von: Regne
Geschrieben am: 31.07.2014 06:33:27

Ok Funktioniert wunderbar dachte wenn ma dieses auf True setzt wird es gespeichert...


 

Beiträge aus den Excel-Beispielen zum Thema "Problem mit Userform"