Live-Forum - Die aktuellen Beiträge
Datum
Titel
29.03.2024 13:14:12
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1788to1792
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Laufzeitfehler 1004

Laufzeitfehler 1004
01.11.2020 11:08:05
Detlef
Hallo.
Ich habe eine tabelle mit 13 tabellenblättern, für jeden monat eins. Ich bin jetzt dabei die blätter mit einem makro so zu beeinflussen das sie nur eingeblendet werden wenn der jeweilige monat angezeigt wird. das klappt soweit ganz gut. nur wenn am anfang des monats der nächste monat angezeigt werden soll erscheint der Fehler 1004 " Die Visible-eigenschaft des Worksheet-Objekt kann nicht festgestellt werden".
Jedes einzelne Blatt ist schreibgeschützt.
In einem weiteren Blatt (Makro)liegt eine Tabelle mit der Monatsberechnung.
Ich habe folgende makro geschrieben. Was ist dort falsch?
Private Sub Worksheet_Calculate()
If Range("Makro!c5").Value = "ja" Then
ActiveWorkbook.Sheets("januar").Unprotect Password:=""
Sheets("januar").Visible = True
ActiveWorkbook.Sheets("januar").Protect Password:=""
Else
Sheets("januar").Visible = False
End If
If Range("Makro!c6").Value = "ja" Then
ActiveWorkbook.Sheets("februar").Unprotect Password:=""
Sheets("februar").Visible = True
ActiveWorkbook.Sheets("februar").Protect Password:=""
Else
Sheets("februar").Visible = False
End If
If Range("Makro!c7").Value = "ja" Then
ActiveWorkbook.Sheets("märz").Unprotect Password:=""
Sheets("märz").Visible = True
ActiveWorkbook.Sheets("märz").Protect Password:=""
Else
Sheets("märz").Visible = False
End If
If Range("Makro!c8").Value = "ja" Then
ActiveWorkbook.Sheets("april").Unprotect Password:=""
Sheets("april").Visible = True
ActiveWorkbook.Sheets("april").Protect Password:=""
Else
Sheets("april").Visible = False
End If
If Range("Makro!c9").Value = "ja" Then
ActiveWorkbook.Sheets("mai").Unprotect Password:=""
Sheets("mai").Visible = True
ActiveWorkbook.Sheets("mai").Protect Password:=""
Else
Sheets("mai").Visible = False
End If
If Range("Makro!c10").Value = "ja" Then
ActiveWorkbook.Sheets("juni").Unprotect Password:=""
Sheets("juni").Visible = True
ActiveWorkbook.Sheets("juni").Protect Password:=""
Else
Sheets("juni").Visible = False
End If
If Range("Makro!c11").Value = "ja" Then
ActiveWorkbook.Sheets("juli").Unprotect Password:=""
Sheets("juli").Visible = True
ActiveWorkbook.Sheets("juli").Protect Password:=""
Else
Sheets("juli").Visible = False
End If
If Range("Makro!c12").Value = "ja" Then
ActiveWorkbook.Sheets("august").Unprotect Password:=""
Sheets("august").Visible = True
ActiveWorkbook.Sheets("august").Protect Password:=""
Else
Sheets("august").Visible = False
End If
If Range("Makro!c13").Value = "ja" Then
ActiveWorkbook.Sheets("september").Unprotect Password:=""
Sheets("september").Visible = True
ActiveWorkbook.Sheets("september").Protect Password:=""
Else
Sheets("september").Visible = False
End If
If Range("Makro!c14").Value = "ja" Then
ActiveWorkbook.Sheets("oktober").Unprotect Password:=""
Sheets("Oktober").Visible = True
ActiveWorkbook.Sheets("oktober").Protect Password:=""
Else
Sheets("oktober").Visible = False
End If
If Range("Makro!c15").Value = "ja" Then
ActiveWorkbook.Sheets("november").Unprotect Password:=""
Sheets("november").Visible = True
ActiveWorkbook.Sheets("november").Protect Password:=""
Else
Sheets("Oktober").Visible = False
End If
If Range("Makro!c16").Value = "ja" Then
ActiveWorkbook.Sheets("dezember").Unprotect Password:=""
Sheets("dezember").Visible = True
ActiveWorkbook.Sheets("dezember").Protect Password:=""
Else
Sheets("dezember").Visible = False
End If
Sheets("makro").Visible = False
End Sub

Danke im voraus für eure Hilfe

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Laufzeitfehler 1004
01.11.2020 11:23:16
volti
Hallo Detlef,
ohne mir Deinen Code jetzt näher angeschaut zu haben, stellt sich mir folgende Frage.
Kann es sein, dass vor Einblenden des Blattes für den neuen Monats das Blatt des vorhergehenden Monats schon ausgeblendet werden soll und damit kein Blatt mehr visible ist.
Mindestens ein Tabellenblatt muss sichtbar sein.
Vielleicht das ganze von hinten aufziehen...
viele Grüße
Karl-Heinz
AW: Laufzeitfehler 1004
01.11.2020 11:34:54
Daniel
Hi
das mit dem Protect/Unprotect kannst du weglassen.
zum Ein- oder Ausblenden ist der blattschutz nicht relevant.
das wäre höchstens der Arbeitsmappenschutz.
der Fehler dürfte sein, dass in Excel immer mindestens ein Blatt sichtbar sein muss.
wenn jetzt das Blatt "Makro" ausgeblendet ist wenn das makro startet (du blendest es am Ende zwar aus, aber zu beginn nicht ein), dann kann dieser Zustand eintreten, weil du zuerst den Oktober ausblendest und erst danach den November einblendest, du kannst aber den Oktorber nicht ausblenden, wenn er das einzige sichtbare Tabellenblatt ist.
eine mögliche Lösung wäre, dass du die Zellen 2x durchläufst.
im ersten Durchgang blendest du die Blätter mit "ja" ein und im zweiten Durchgang blendest du die ohne "ja" aus.
Gruß Daniel
Anzeige
AW: Laufzeitfehler 1004
01.11.2020 13:33:40
Detlef
Hallo daniel,
danke für deinen Tip.
Ich habe den Fehler endlich ausgemerzt. Mit diesem makro gehts.
Private Sub Worksheet_Calculate()
If Range("c5").Value = "ja" Then
Sheets("januar").Visible = True
Else
Sheets("januar").Visible = False
End If
Sheets("Muster").Visible = True
If Range("c6").Value = "ja" Then
Sheets("februar").Visible = True
Else
Sheets("februar").Visible = False
End If
Sheets("Muster").Visible = True
If Range("c7").Value = "ja" Then
Sheets("märz").Visible = True
Else
Sheets("märz").Visible = False
End If
Sheets("Muster").Visible = True
If Range("c8").Value = "ja" Then
Sheets("april").Visible = True
Else
Sheets("april").Visible = False
End If
Sheets("Muster").Visible = True
If Range("c9").Value = "ja" Then
Sheets("mai").Visible = True
Else
Sheets("mai").Visible = False
End If
Sheets("Muster").Visible = True
If Range("c10").Value = "ja" Then
Sheets("juni").Visible = True
Else
Sheets("juni").Visible = False
End If
Sheets("Muster").Visible = True
If Range("c11").Value = "ja" Then
Sheets("juli").Visible = True
Else
Sheets("juli").Visible = False
End If
Sheets("Muster").Visible = True
If Range("c12").Value = "ja" Then
Sheets("august").Visible = True
Else
Sheets("august").Visible = False
End If
Sheets("Muster").Visible = True
If Range("c13").Value = "ja" Then
Sheets("september").Visible = True
Else
Sheets("september").Visible = False
End If
Sheets("Muster").Visible = True
If Range("c14").Value = "ja" Then
Sheets("Oktober").Visible = True
Else
Sheets("oktober").Visible = False
End If
Sheets("Muster").Visible = True
If Range("c15").Value = "ja" Then
Sheets("november").Visible = True
Else
Sheets("november").Visible = False
End If
Sheets("Muster").Visible = True
If Range("c16").Value = "ja" Then
Sheets("dezember").Visible = True
Else
Sheets("dezember").Visible = False
End If
Sheets("Muster").Visible = False
End Sub

Gruss
Anzeige
AW: Laufzeitfehler 1004
01.11.2020 13:04:41
volti
Hallo Detlef,
wenn Du magst, kannst Du das ganze auch auf ein paar Zeilen "zusammendampfen".
Das Blatt Makro wird zunächst eingeblendet, damit ist dann immer ein Blatt eingeblendet.
Nach der Aktion kann es dann wieder ausgeblendet werden.
Code:
[Cc]

Private Sub Worksheet_Calculate() Dim sMon() As String, iMon As Integer 'Monatsnamen in ein Array schaffen sMon = Split(" januar februar märz april mai juni juli august september oktober november dezember") With Sheets("Makro") .Visible = True 'Blatt Makro einbenden For iMon = 1 To 12 'Alle Monate durchgehen und ein/ausblenden Sheets(sMon(iMon)).Visible = IIf(.Cells(iMon + 4, "C").Value = "ja", True, False) Next iMon On Error Resume Next 'Fehlerabfang: Falls alles ausgeblendet sein sollte .Visible = False 'Blatt Makro einbenden End With End Sub

_________________________
viele Grüße aus Freigericht 😊
Karl-Heinz

Anzeige
AW: Laufzeitfehler 1004
01.11.2020 13:41:52
Detlef
Hallo Karl Heinz,
ich habe gerade selbst das makro soweit geändert das es geht.
Aber auch mit deinem makro klappt es bestens.
Hier ist mein makro:
Private Sub Worksheet_Calculate()
If Range("c5").Value = "ja" Then
Sheets("januar").Visible = True
Else
Sheets("januar").Visible = False
End If
Sheets("Muster").Visible = True
If Range("c6").Value = "ja" Then
Sheets("februar").Visible = True
Else
Sheets("februar").Visible = False
End If
Sheets("Muster").Visible = True
If Range("c7").Value = "ja" Then
Sheets("märz").Visible = True
Else
Sheets("märz").Visible = False
End If
Sheets("Muster").Visible = True
If Range("c8").Value = "ja" Then
Sheets("april").Visible = True
Else
Sheets("april").Visible = False
End If
Sheets("Muster").Visible = True
If Range("c9").Value = "ja" Then
Sheets("mai").Visible = True
Else
Sheets("mai").Visible = False
End If
Sheets("Muster").Visible = True
If Range("c10").Value = "ja" Then
Sheets("juni").Visible = True
Else
Sheets("juni").Visible = False
End If
Sheets("Muster").Visible = True
If Range("c11").Value = "ja" Then
Sheets("juli").Visible = True
Else
Sheets("juli").Visible = False
End If
Sheets("Muster").Visible = True
If Range("c12").Value = "ja" Then
Sheets("august").Visible = True
Else
Sheets("august").Visible = False
End If
Sheets("Muster").Visible = True
If Range("c13").Value = "ja" Then
Sheets("september").Visible = True
Else
Sheets("september").Visible = False
End If
Sheets("Muster").Visible = True
If Range("c14").Value = "ja" Then
Sheets("Oktober").Visible = True
Else
Sheets("oktober").Visible = False
End If
Sheets("Muster").Visible = True
If Range("c15").Value = "ja" Then
Sheets("november").Visible = True
Else
Sheets("november").Visible = False
End If
Sheets("Muster").Visible = True
If Range("c16").Value = "ja" Then
Sheets("dezember").Visible = True
Else
Sheets("dezember").Visible = False
End If
Sheets("Muster").Visible = False
End Sub

Ist zwar mehr zu schreiben, funktioniert aber auch.
danke nochmal.
Gruss aus Köln
Anzeige
warum dann offen? o.w.T.
01.11.2020 13:48:08
Werner

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige