Hallo Zusammen,
ich habe ein kleines Problem beim Ausführen von meinem Makro. Wenn ich es über VBA Fenster schrittweise mit (F8) ausführe - verläuft alles normal. Aber soweit ich es im Excel ausführen will, gibt es Schwierigkeiten.
Im Verlauf lande ich irgendwann in anderem Blatt "OEE" (ist in der Mappe das letzte Blatt), obwohl ich eigentlich mit dem Makro keine anderen Blätter aktiviere. Ich müsste immer im aktiven Tabellenblatt bleiben.
Ich habe eine Vermutung, dass es am Entsperren von den Tabellenblättern liegt. Gibt es eine Möglichkeit die Tabellenblätter zu entsperren, ohne die auf irgendeine Weise anzusprechen?
Andere Möglichkeit: gibt es einen Code, dass ich das letzte aktive Tabellenblatt auswähle (wo das Makro gestartet hat)?
ich habe ein kleines Problem beim Ausführen von meinem Makro. Wenn ich es über VBA Fenster schrittweise mit (F8) ausführe - verläuft alles normal. Aber soweit ich es im Excel ausführen will, gibt es Schwierigkeiten.
Im Verlauf lande ich irgendwann in anderem Blatt "OEE" (ist in der Mappe das letzte Blatt), obwohl ich eigentlich mit dem Makro keine anderen Blätter aktiviere. Ich müsste immer im aktiven Tabellenblatt bleiben.
Ich habe eine Vermutung, dass es am Entsperren von den Tabellenblättern liegt. Gibt es eine Möglichkeit die Tabellenblätter zu entsperren, ohne die auf irgendeine Weise anzusprechen?
Andere Möglichkeit: gibt es einen Code, dass ich das letzte aktive Tabellenblatt auswähle (wo das Makro gestartet hat)?
Visual Basic-Quellcode
- Sub Charge_V()
- ' Blattschutz bei benötigten Tabellenblättern deaktivieren
- ActiveSheet.Unprotect Password:="Lok"
- Worksheets("OEE").Unprotect Password:="Lok"
- Worksheets("Pareto").Unprotect Password:="Lok"
- ' Aktuelles Tabellenblatt (Charge) kopieren
- ActiveSheet.Copy before:=Sheets("pareto")
- ' Neues Tabellenblatt umbenennen. Count wird aktualisiert und um eine "1" ergänzt. Neues Blatt wird in "V_*" +1 umbenannt
- Range("z1") = Range("z1") + 1
- Range("z12") = "V_" & Range("z1")
- ActiveSheet.Name = Range("z12").Text
- ' Im neuen Tabellenblatt wird in zwei Zellen eine Formel mit Hinweis auf vorherige Charge eingefügt. Beim Beschriften von der Formel wird zur Verknüpfung
- ' bestehendes Tabellenblatt genommen "V_1"
- '"Start Rüsten" Der Wert wird von vorheriger Charge - Ende Produktion übernommen.
- Range("D6:F6") = "=V_1!R[2]C"
- '"Reminder" Hinweis, wenn nicht alle Felder in der vorherigen Charge ausgefüllt waren.
- Range("R4:R9") = "=IF(OR(V_1!RC[-14]=0,V_1!R[1]C[-14]=0,V_1!R[2]C[-14]=0,V_1!R[3]C[-14]=0,V_1!R[4]C[-14]=0),""Vorherige Charge nicht komplett ausgefüllt!"",0)"
- ' Anhand von aktuellem Count wird in der Zelle ermittelt, welche Charge davor lief
- Range("z3") = "V_" & Range("z1") - 1
- ' "V_1" wird mit der richtigen Bezeichnung ersetzt
- Cells.Replace What:="V_1", Replacement:=Cells.Range("z3")
- ' "Start Rüsten" Die Zelle wird gesperrt
- Range("D6:F6").Locked = True
- ' ClearContent. Im neuem Tabellenblatt werden alle alten Werte von der vorherigen Charge gelöscht. Alle Zellen, die nicht gesperrt werden durchsucht und gelöscht
- Dim Bereich As Range
- Dim Zelle As Range
- For Each Zelle In ActiveSheet.UsedRange
- If Zelle.Locked = False Then
- If Bereich Is Nothing Then
- Set Bereich = Zelle
- Else
- Set Bereich = Union(Bereich, Zelle)
- End If
- End If
- Next
- Bereich.ClearContents
- ' OEE Daten aktualisieren mit der neuen Charge
- With Worksheets("OEE")
- ' Im Tabellenblatt "OEE" wird der Filter rausgenommen
- .Range("$A$2:$D$1500").AutoFilter Field:=2
- End With
- ' Werte, die an aktuelle Charge anknüpfen werden kopiert
- ActiveSheet.Range("U12:Ae72").Copy _
- ' Im Tabellenblatt "OEE" wird nach der nächsten freien Zeile gesucht, um die Werte vom neuem Tabellnblatt zu ergänzen
- With Worksheets("OEE")
- .Range("A" & Application.Max(5, .Cells(.Rows.Count, 1).End(xlUp).Row + 1)). _
- PasteSpecial Paste:=xlPasteAll
- End With
- 'Pareto Daten aktualisieren mit der neuen Charge
- ' Werte, die an aktuelle Charge anknüpfen werden kopiert
- ActiveSheet.Range("Af12:Ai191").Copy _
- ' Im Tabellenblatt "Pareto" wird nach der nächsten freien Zeile gesucht, um die Werte vom neuem Tabellnblatt zu ergänzen
- With Worksheets("Pareto")
- .Range("A" & Application.Max(5, .Cells(.Rows.Count, 1).End(xlUp).Row + 1)). _
- PasteSpecial Paste:=xlPasteAll
- End With
- Range("e11").Select
- ActiveCell.Offset(1, 0).Select
- ' Blattschutz bei allen Tabellenblättern aktivieren
- For Each Blatt In ActiveWorkbook.Worksheets
- Blatt.Protect ("Lok")
- Next Blatt
- End Sub