Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
24.04.2024 17:19:09
Anzeige
Archiv - Navigation
1752to1756
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
24.04.2020 09:16:28
René
Hallo
Ich habe eine Arbeitsmappe mit 3 VBA welche ich Freigeben möchte.
Makro 1:

Private Sub Workbook_Open()
Worksheets("Tagesleistung").Protect Password:="rprp", UserInterfaceOnly:=True
End Sub

Makro 2:
Option Explicit
Enum Spalten_in_Tagesleistung
stLBound = 0 'Damit wir ggf. von stLBound + 1 iterieren können
stAuftraege = 1 '= 1 kann man weglassen, der nächste Eintrag bekommt immer 1 dazu
stGesamtmenge
stRestmenge 'Die Maschinen sind alle von stRestmenge + 1 bis stUbound - 1
stMaschine1
stMaschine2
stMaschine3
stMaschine4
stMaschine5
stMaschine6
stMaschine7
stMaschine8
stUBound 'Damit wir bis stUBound - 1 iterieren können
End Enum
Sub Restmenge_ermitteln()
Dim i As Long, dRest As Double, dTotal As Double
With Sheets("Tagesleistung")
i = 5 'Starte ab Zeile 5 - man könnte auch nach dem Stichwort "Aufträge" in Spalte A suchen _
lassen
'Nun laufen wir von Zeile 5 hinunter bis wir auf Total stoßen (zur Sicherheit wollen wir nie in _
den Bereich Folieren gelangen!)
Do While .Cells(i, stAuftraege) "Total" And .Cells(i, stAuftraege) "Folieren" ' And Not _
IsEmpty(.Cells(i, stRestmenge))
If .Cells(i, stAuftraege) 0 Then 'Die Nullen in Spalte sollte man möglichst löschen, _
aber wir ignorieren sie erst einmal
'Wenn wir bereits eine Restmenge haben, ziehen wir davon ab, ansonsten starten wir mit _
der Gesamtmenge
dRest = IIf(IsEmpty(.Cells(i, stRestmenge)), .Cells(i, stGesamtmenge), .Cells(i, _
stRestmenge)) _
- Application.WorksheetFunction.Sum(.Range(.Cells(i, stRestmenge + 1), .Cells(i, _
stUBound - 1)))
.Cells(i, stRestmenge) = dRest
dTotal = dTotal + dRest
.Range(.Cells(i, stRestmenge + 1), .Cells(i, stUBound - 1)).ClearContents
End If
i = i + 1
Loop
If .Cells(i, stAuftraege) = "Total" Then .Cells(i, stRestmenge) = dTotal
End With
End Sub
Makro 3:

Public Sub Übertrag()
Dim loLetzteQuelle As Long, loLetzteZiel As Long, loStart As Long
Application.ScreenUpdating = False
With Worksheets("Tagesleistung")
loLetzteQuelle = .Cells(.Rows.Count, "L").End(xlUp).Row
Union(.Range("A5:A" & loLetzteQuelle), .Range("L5:L" & loLetzteQuelle)).Copy
End With
With Worksheets("Statistik")
loLetzteZiel = .Cells(.Rows.Count, "B").End(xlUp).Offset(1).Row
.Range("B" & loLetzteZiel).PasteSpecial Paste:=xlPasteValues
loStart = loLetzteZiel
loLetzteZiel = .Cells(.Rows.Count, "B").End(xlUp).Row
.Range("A" & loStart & ":A" & loLetzteZiel) = Date
End With
Application.CutCopyMode = False
End Sub

Nun mein Problem. Sobald ich die Mappe Freigeben kommt ein "Laufzeitfehler 1004".
Kann mir da jemand Helfen?
Gruss René

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Laufzeitfehler 1004 in welcher Codezeile?
24.04.2020 09:33:17
EtoPHG
Hallo René,
Ich sehe NIRGENDS eine Unprotect-Methode zum Freigeben eines Blattschutzs!
Ausser der ersten Prozedur, haben die beiden anderen nichts mit dem Blattschutz zu tun!
Wenn eine Fehlermeldung auftritt, bitte erwähnen, welche Codezeile (gelb im VBA Editor) den Fehler verursacht!
Gruess Hansueli
AW: Laufzeitfehler 1004 in welcher Codezeile?
24.04.2020 10:17:05
René
Hallo Hansueli
Leider Kenne ich mich mit VBA nur sehr wenig aus.
Ich habe 3 Tabellenblätter aber nur in einem ein Blattschutz. Wo setze ich den Code für den Blattschutz aufheben? Nur im Tabellenblatt wo der Blattschutz? Und wie müsste der Code lauten?
Gruss René
Anzeige
AW: Laufzeitfehler 1004 in welcher Codezeile?
24.04.2020 10:30:12
Daniel
Hi
Bedenke:
1. Makros dürfen immer nur das tun, was auch der Anwender tun darf
2. in freigegebenen Mappen sind bestimmte Aktionen nicht mehr möglich, so beispielsweise das Aufheben oder setzen eines Blattschutzes
Dh wenn die Mappe freigegeben ist, führt jedes Protect oder Unprotect zu einem Fehler.
Du müsstest also komplett auf den Blattschutz verzichten, oder diesen so einrichten, dass das Makro auch mit Blattschutz seine Arbeit tun kann und keine geschützten Zellen bearbeitet.
Gruß Daniel
AW: Laufzeitfehler 1004 in welcher Codezeile?
24.04.2020 10:47:39
René
Hi Daniel
Danke, ist sehr gut auch für eine Leien beschrieben. Somit werde ich auf den Blattschutz verzichten, dann ist die Fehlemeldung auch weg.
Danke und Gruss
René
Anzeige
...und damit auch der Thread geschlossen! (owT)
24.04.2020 10:51:17
EtoPHG

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige