Hallo!
Ich habe ein Problem: ich habe ein Excel-Workbook erstellt, um damit Szenarien für Personalverrechnung zu rechnen.
Das funktioniert auch alles so weit gut. Wenn ich aber das Workbook beenden will, wird immer eine Fehlermeldung angezeigt: Die Methode Sheets für das Objekt "Global" ist fehlgeschlagen.
Im "Betrieb" läuft alles normal, nirgends gibt es Probleme. Wenn ich aber beende, erscheint diese Fehlermeldung. Wenn ich dann den Debugging-Modus aufrufe, wird auf die Zeile "Sheets("Abrechnung").Select" verwiesen, wobei "Abrechnung" das aktuell auf dem Bildschirm angezeigte Tabellenblatt ist.
Wenn ich die Arbeitsmappe dagegen nur schließe, ohne Excel zu beenden, erscheint auch KEINE Fehlermeldung!
Ich habe das schon ein wenig eingegrenzt: es gibt auf diesem Tabellenblatt eine Combobox, die u.a eine Programmierung bei Change() eingetragen hat. und dort bleibt er dann eben immer stehen.
Dabei ist völlig irrelevant, ob tatsächlich eine Änderung durchgeführt wurde, anscheinend wird beim Beenden IMMER diese Funktion dieser Combobox durchlaufen, selbst wenn das Dokument nach dem Öffnen sofort wieder geschlossen wird, und ich weiß nicht, warum das so ist.
Es handelt sich dabei um eine Combobox, die aus dem Menü "ActiveX-Steuerelemente" erstellt wurde.
Es ist auch völlig egal, ob der Blattschutz aktiviert ist, oder nicht.
Ich habe Office 2010 unter Win7 x64 in Verwendung.
Für jede Hilfe bin ich dankbar, da ich da wirklich anstehe.
Schon jetzt vielen Dank im Voraus für alle Tipps und Hilfen.
Zur Info hier noch der Code, der anscheinend die Probleme auslöst:
Private Sub Abrechnungsmonat1_Change()
Dim adr As Range
Dim Amonat, SZ
Dim Anz As Integer
Sheets("Abrechnung").Select
Range("M6:P6").Value = "Jahressechstel vor Abr. " & [Abrechnungsmonat1].Column(1)
SZ = Range("J12").Value
Amonat = Range("C5").Value
Sheets("Abrechnung").Select
Anz = Application.WorksheetFunction.CountIf(Range("C2:C13"), ">0")
'MsgBox Anz
Sheets("Jahressechstel").Select
If Amonat > Application.WorksheetFunction.CountIf(Sheets("Jahressechstel").Range("C2:C13"), ">0") Then
x = MsgBox("Es wurde noch nicht für alle vergangenen Monate das Jahressechstel eingetragen!", vbOKOnly + vbInformation, "Fehlende Eingaben")
End If
Msechstel = Application.WorksheetFunction.Index(Worksheets("Jahressechstel").Range("C2:c13"), Amonat)
If Msechstel = 0 Or IsNull([Msechstel]) Then
x = MsgBox("Soll das Jahressechstel für den Monat " & Abrechnungsmonat1.Column(1) & " eingetragen werden?", vbYesNo + vbQuestion, "Jahressechstel eintragen")
If x = 6 Then
Worksheets("Abrechnung").Select
Range("E18").Select
Application.WorksheetFunction.Index(Worksheets("Jahressechstel").Range("C2:F13"), Amonat, 1) = ActiveCell.Value
Application.WorksheetFunction.Index(Worksheets("Jahressechstel").Range("C2:F13"), Amonat, 1).Value = CDbl(Format(Application.WorksheetFunction.Index(Worksheets("Jahressechstel").Range("C2:F13"), Amonat, 1), "##,##0.00 "))
End If
End If
Sheets("Abrechnung").Select
Range("Q6").Select
ActiveCell.Value = CDbl(Format(Application.WorksheetFunction.Index(Worksheets("Jahressechstel").Range("C2:F13"), Amonat, 2), "##,##0.00 "))
Range("E12").Select
Ende:
End Sub
Zur Info: in der Zeile 6 range("M6:P6") [==> M 6 : P 6, ich habe es hier wegen dem Smiley mit Abstand geschrieben] ist insofern korrekt, als es sich um eine verbundene Zelle handelt ...
Ich habe ein Problem: ich habe ein Excel-Workbook erstellt, um damit Szenarien für Personalverrechnung zu rechnen.
Das funktioniert auch alles so weit gut. Wenn ich aber das Workbook beenden will, wird immer eine Fehlermeldung angezeigt: Die Methode Sheets für das Objekt "Global" ist fehlgeschlagen.
Im "Betrieb" läuft alles normal, nirgends gibt es Probleme. Wenn ich aber beende, erscheint diese Fehlermeldung. Wenn ich dann den Debugging-Modus aufrufe, wird auf die Zeile "Sheets("Abrechnung").Select" verwiesen, wobei "Abrechnung" das aktuell auf dem Bildschirm angezeigte Tabellenblatt ist.
Wenn ich die Arbeitsmappe dagegen nur schließe, ohne Excel zu beenden, erscheint auch KEINE Fehlermeldung!
Ich habe das schon ein wenig eingegrenzt: es gibt auf diesem Tabellenblatt eine Combobox, die u.a eine Programmierung bei Change() eingetragen hat. und dort bleibt er dann eben immer stehen.
Dabei ist völlig irrelevant, ob tatsächlich eine Änderung durchgeführt wurde, anscheinend wird beim Beenden IMMER diese Funktion dieser Combobox durchlaufen, selbst wenn das Dokument nach dem Öffnen sofort wieder geschlossen wird, und ich weiß nicht, warum das so ist.
Es handelt sich dabei um eine Combobox, die aus dem Menü "ActiveX-Steuerelemente" erstellt wurde.
Es ist auch völlig egal, ob der Blattschutz aktiviert ist, oder nicht.
Ich habe Office 2010 unter Win7 x64 in Verwendung.
Für jede Hilfe bin ich dankbar, da ich da wirklich anstehe.
Schon jetzt vielen Dank im Voraus für alle Tipps und Hilfen.
Zur Info hier noch der Code, der anscheinend die Probleme auslöst:
Private Sub Abrechnungsmonat1_Change()
Dim adr As Range
Dim Amonat, SZ
Dim Anz As Integer
Sheets("Abrechnung").Select
Range("M6:P6").Value = "Jahressechstel vor Abr. " & [Abrechnungsmonat1].Column(1)
SZ = Range("J12").Value
Amonat = Range("C5").Value
Sheets("Abrechnung").Select
Anz = Application.WorksheetFunction.CountIf(Range("C2:C13"), ">0")
'MsgBox Anz
Sheets("Jahressechstel").Select
If Amonat > Application.WorksheetFunction.CountIf(Sheets("Jahressechstel").Range("C2:C13"), ">0") Then
x = MsgBox("Es wurde noch nicht für alle vergangenen Monate das Jahressechstel eingetragen!", vbOKOnly + vbInformation, "Fehlende Eingaben")
End If
Msechstel = Application.WorksheetFunction.Index(Worksheets("Jahressechstel").Range("C2:c13"), Amonat)
If Msechstel = 0 Or IsNull([Msechstel]) Then
x = MsgBox("Soll das Jahressechstel für den Monat " & Abrechnungsmonat1.Column(1) & " eingetragen werden?", vbYesNo + vbQuestion, "Jahressechstel eintragen")
If x = 6 Then
Worksheets("Abrechnung").Select
Range("E18").Select
Application.WorksheetFunction.Index(Worksheets("Jahressechstel").Range("C2:F13"), Amonat, 1) = ActiveCell.Value
Application.WorksheetFunction.Index(Worksheets("Jahressechstel").Range("C2:F13"), Amonat, 1).Value = CDbl(Format(Application.WorksheetFunction.Index(Worksheets("Jahressechstel").Range("C2:F13"), Amonat, 1), "##,##0.00 "))
End If
End If
Sheets("Abrechnung").Select
Range("Q6").Select
ActiveCell.Value = CDbl(Format(Application.WorksheetFunction.Index(Worksheets("Jahressechstel").Range("C2:F13"), Amonat, 2), "##,##0.00 "))
Range("E12").Select
Ende:
End Sub
Zur Info: in der Zeile 6 range("M6:P6") [==> M 6 : P 6, ich habe es hier wegen dem Smiley mit Abstand geschrieben] ist insofern korrekt, als es sich um eine verbundene Zelle handelt ...