Gibt es einen Lösungsvorschlag ?
Private Sub CommandButton1_Click()
ThisWorkbook.Saved = True
If Workbooks.Count = 1 Then Application.Quit Else ThisWorkbook.Close
End Sub
Private Sub CommandButton1_Click()
ThisWorkbook.Saved = True
If Workbooks.Count = 1 Then Application.Quit Else ThisWorkbook.Close
End Sub
Private Sub CommandButton1_Click()
ThisWorkbook.Saved = True
If Workbooks.Count = 1 Then Application.Quit Else ThisWorkbook.Close
End Sub
und mit
Workbook beforeClose
If CommandButton1 = true then cancel =true
End Sub
Ich Habe es aus dem Kopf geschrieben aber so ähnlich sollte es funktionieren.
Gruß
Felix
Workbook beforeClose
muß heißen
Workbook beforeSave
du musst die Userform vorher entladen. Entweder mit:
Me.Hide
oder
Unload Me
Gruß
Nepumuk
da ändert sich nichts
Private Sub CommandButton1_Click()
unload.me 'oder Userform.hide ERGÄNZEN
ThisWorkbook.Saved = True 'HERAUSNEHMEN
If Workbooks.Count = 1 Then Application.Quit Else ThisWorkbook.Close
End Sub
und mit
und natürlich nur diesen Code in das Workbook:
Sub Workbook_Open
If CommandButton1 = true then cancel =true
End Sub
Sorry, ich muß wohl mich erst einmal weiterhin zurückhalten bis
ich etwas sicherer bin.
Gruß
Felix
bin totaler VBA-Anfänger und froh, hier Hilfe zu finden...auch wenn es manchmal nicht gleich funktioniert. Danke also erstmal für Deine Hilfe !
Trotzdem hat sich noch nix geändert. Meine Code sehen jetzt so aus:
Private Sub Workbook_Open()
For Each wks In ActiveWorkbook.Sheets
If wks.Name <> "Werte" Then
wks.Visible = True
Else
wks.Visible = xlVeryHidden
End If
Next
UserForm1.Show
If UserForm1.CommandButton1 = True Then Cancel = True
End Sub
Private Sub CommandButton1_Click()
UserForm1.Hide
If Workbooks.Count = 1 Then Application.Quit Else ThisWorkbook.Close
End Sub
Wenn Du vielleicht noch ne Idee hättest ???
Private Sub Workbook_bevorClose()
legen und aus der open herausnehmen, wie siehts dann aus.
kann es leider nicht selbst ausprobieren da ich momentan kein zweiten Rechner habe. Auf diesem ist kein EXCEL
Gruß
Felix
Private Sub Workbook_bevoreSave()
muß es natürlich heißen da Du ja die abspeicherfrage verhindern willst.
nach wie vor kommt die Frage, ob speichern oder nicht.
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Worksheets("Start").Visible = True
For Each wks In ActiveWorkbook.Sheets
If wks.Name = "Start" Then
wks.Visible = True
Else
wks.Visible = xlVeryHidden
End If
Next
If UserForm1.CommandButton1 = True Then Cancel = True
End Sub
Ich geb´s bald auf. Es funktionierte ja schon mal, erst seit ich den Part mit Blätter aus- und einblenden dazugebracht habe, geht´s net mehr....ratlos bin
Gruß
Lutz
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
If UserForm1.CommandButton1 = True Then Cancel = True
End Sub
Und mache es so.
Private Sub Workbook_BeforeSave(Cancel As Boolean)
If UserForm1.CommandButton1 = True Then Cancel = True
End Sub
Den folgenden Cod hattest Du glaube ich in der Open stehen.
Private Sub Workbook_Open()
For Each wks In ActiveWorkbook.Sheets
If wks.Name <> "Werte" Then
wks.Visible = True
Else
wks.Visible = xlVeryHidden
End If
Next
UserForm1.Show
End Sub
Und denke daran, gebe nie auf und wenn es noch so schwer ist.
Ich bin auch noch ein Anfänger wie Du siehst.
Aber man lernt jedes mal etwas dazu.
Mein letztes Makro habe ich auch verbissen mit einem Forum und eigener Arbeit in 60 Std geschrieben. Aber nun läuft es und ich bin stolz wie Oskar
Gruß
Felix
p.s. Kopf hoch
Habe dieses Laufwerk ausgeschaltet und anderes Laufwerk eingelegt und ausprobiert. Bei mir lief es.
Wie siehts bei Dir aus? Sonst weiß ich auch nicht mehr.
Option Explicit
'DEIN "Schließen Button ohne Speicherabfrage" doppelt anklicken und Code einfügen
Private Sub CommandButton1_Click() Dim wks
'wks = Worksheets
For Each wks In ActiveWorkbook.Sheets
If wks.Name <> "Werte" Then
wks.Visible = True
Else
wks.Visible = xlVeryHidden
End If
Next
ActiveWorkbook.Close
End Sub
Und diesen Code in "Diese Arbeitsmappe"
Option Explicit
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
If UserForm1.CommandButton1 = True Then Cancel = True
End Sub
Private Sub CommandButton1_Click()
ActiveWorkbook.Close
End Sub
Und diesen Code in "Diese Arbeitsmappe"
Option Explicit
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
If UserForm1.CommandButton1 = True Then Cancel = True
End Sub
Woher diese Dinge kommen weiß ich nicht mehr. Waren die in der
Workbook_Open? Dann bringe Sie wieder dort hin.
For Each wks In ActiveWorkbook.Sheets
If wks.Name <> "Werte" Then
wks.Visible = True
Else
wks.Visible = xlVeryHidden
End If
Next
Gruß
Felix
p.s. Ich hoffe ich habe Deine Geduld nicht zu doll strapaziert.
Private Sub CommandButton1_Click()
ThisWorkbook.Saved = True
If Workbooks.Count = 1 Then Application.Quit Else ThisWorkbook.Close
End Sub
Bis dato ging auch alles. Dann habe ich die Geschichte mit dem Aus-und Einblenden der Blätter reingebracht, damit bei Nichtaktivierung der Makros nur ein Hinweisblatt erscheint.
Und dann war halt nix mehr mit ungespeichert schließen...
Auch dazu nochmal die Codes:
Private Sub Workbook_Open()
For Each wks In ActiveWorkbook.Sheets
If wks.Name <> "Werte" Then
wks.Visible = True
Else
wks.Visible = xlVeryHidden
End If
Next
UserForm1.Show
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Worksheets("Start").Visible = True
For Each wks In ActiveWorkbook.Sheets
If wks.Name = "Start" Then
wks.Visible = True
Else
wks.Visible = xlVeryHidden
End If
Next
End Sub
Kannst meine Geduld ruhig weiter strapazieren....bin froh, wenn überhaupt noch einer mit dranbleibt
Gruß
Lutz
Option Explicit
Folgendes in Diese Arbeitsmappe
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
If UserForm1.CommandButton1 = True Then Cancel = True
End Sub
'Private Sub Workbook_Open()
'Dim wks
'For Each wks In ActiveWorkbook.Sheets
'If wks.Name <> "Werte" Then
'wks.Visible = True
'Else
'wks.Visible = xlVeryHidden
'End If
'Next
'UserForm1.Show
'End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim wks
Worksheets("Start").Visible = True
For Each wks In ActiveWorkbook.Sheets
If wks.Name = "Start" Then
wks.Visible = True
Else
wks.Visible = xlVeryHidden
End If
Next
End Sub
Und dieses jeweils mit Doppelklick der jeweiligen Button
Option Explicit
Private Sub CommandButton1_Click()
If Workbooks.Count = 1 Then Application.Quit
If Workbooks.Count > 1 Then ThisWorkbook.Close
End Sub
Private Sub CommandButton2_Click()
Me.Hide
End Sub
Viel Spaß damit
Ich weiß nur nicht warum Du beim schließen alle Blätter außer "Start" unsichtbar machst und beim öffnen wieder alles revedierst. Wahrscheinlich solltest Du da noch einmal nachsehen.
Gruß
Felix
Die BeforeSave Routine wird benötigt um das speichern einer Mappe über den Speicherbutton zu verhindern. Wobei die Variable SaveAsUI dann True ist, wenn der Anwender auf Speichern-unter im Menü klickt. Damit kann man unterbinden,dass die Mappe unter einem anderen Namen oder in einem anderen Ordner gespeichert wird.
Gruß
Nepumuk
"In die BeforClose Routine kommt natürlich die Anweisung - Thisworkbock.saved = True"
Ich habe das Problem mit Cancel gelöst. Und zwar, wenn er auf den Abbrechenbutton klickt, ist Cancel=true (siehe in der folgendem Absatz)und dann wird auch ungespeichert geschlossen.
If UserForm1.CommandButton1 = True Then Cancel = True
Gruß
Felix
habe Deinen Tip mal umgesetzt, aber noch immer wird abgefragt, ob speichern oder nicht. Hier nochmal meine jetzigen Codes:
In der UserForm:
Private Sub CommandButton1_Click()
Worksheets("Start").Visible = True
Dim wks
'wks = Worksheets
For Each wks In ActiveWorkbook.Sheets
If wks.Name <> "Werte" Then
wks.Visible = True
Else
wks.Visible = xlVeryHidden
End If
Next
eos = True
ThisWorkbook.Close
End Sub
In Diese Arbeitsmappe:
Public eos As Boolean
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Worksheets("Start").Visible = True
For Each wks In ActiveWorkbook.Sheets
If wks.Name = "Start" Then
wks.Visible = True
Else
wks.Visible = xlVeryHidden
End If
Next
If eos = True Then Thisworkbock.Saved = True
If Workbooks.Count = 1 Then Application.Quit Else ThisWorkbook.Close
End Sub
Kannst Du nochmal nachschauen ???
If eos = True Then Thisworkbock.Saved = True
Sollte heißen: Thisworkbook
Geh im VBA-Editor auf Extras - Optionen und mach bei Variablendeklaration erforderlich einen Haken. Jedes neue Modul das du öffnest wird als erste Zeile Option Explicit stehen haben. Dann kann dir sowas nicht mehr passieren. Es schadet auch nicht, wenn du es nachträglich in deine Module einfügst.
Gruß
Nepumuk
habe den Fehler berichtigt, Haken gesetzt...und immer noch die Meldung....
Gruß
Lutz
Mein Abbrechen-Button in der Userform1:
Private Sub CommandButton1_Click()
Worksheets("Start").Visible = True
Dim wks As Worksheet
For Each wks In ActiveWorkbook.Sheets
If wks.Name <> "Werte" Then
wks.Visible = True
Else
wks.Visible = xlVeryHidden
End If
Next
eos = True
ThisWorkbook.Close
End Sub
Diese Arbeitsmappe:
Option Explicit
Public eos As Boolean
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim wks As Worksheet
Worksheets("Start").Visible = True
For Each wks In ActiveWorkbook.Sheets
If wks.Name = "Start" Then
wks.Visible = True
Else
wks.Visible = xlVeryHidden
End If
Next
If eos = True Then ThisWorkbook.Saved = True
If Workbooks.Count = 1 Then Application.Quit Else ThisWorkbook.Close
End Sub
Private Sub Workbook_Open()
Dim wks As Worksheet
For Each wks In ActiveWorkbook.Sheets
If wks.Name <> "Werte" Then
wks.Visible = True
Else
wks.Visible = xlVeryHidden
End If
Next
UserForm1.Show
End Sub
Nocheinmal:
Folgendes in Diese Arbeitsmappe
Option Explicit
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
If UserForm1.CommandButton1 = True Then Cancel = True
End Sub
'Private Sub Workbook_Open()
'Dim wks
'For Each wks In ActiveWorkbook.Sheets
'If wks.Name <> "Werte" Then
'wks.Visible = True
'Else
'wks.Visible = xlVeryHidden
'End If
'Next
'UserForm1.Show
'End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim wks
Worksheets("Start").Visible = True
For Each wks In ActiveWorkbook.Sheets
If wks.Name = "Start" Then
wks.Visible = True
Else
wks.Visible = xlVeryHidden
End If
Next
End Sub
Und dieses jeweils mit Doppelklick der jeweiligen Button
Option Explicit
Private Sub CommandButton1_Click()
If Workbooks.Count = 1 Then Application.Quit
If Workbooks.Count > 1 Then ThisWorkbook.Close
End Sub
Private Sub CommandButton2_Click()
Me.Hide
End Sub
Gruß
Felix
ich weiß nicht, warum das Teil bei mir nicht funzt...habe Deine Codes komplett übernommen (aus den Kommentaren bei Workbook_Open habe ich Anweisungen gemacht)...trotzdem fragt der mich beim Click auf cmd-Button nach dem Speichern....