ich habe eine einfache Frage
Ich habe ein Makro geschrieben, und als Fehler kommt, dass eine Variable nicht definiert ist.
Ich habe habe ein Sub. Hier definiere ich die Variable WB_Problemliste. Dann rufe ich später ein SuB BlattschutzAusProblemliste auf, und dort ist die Variable plötzlich nicht mehr definiert. Warum? Ich bin doch im selben Modul.
Sub Problemliste_kopieren()
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Dim lEintrUebersicht As Integer
Dim lEintragProblemliste As Integer
lEintrUebersicht = ThisWorkbook.Sheets("Übersicht").Cells(Rows.Count, 2).End(xlUp).Row - 1
Dim WB_Problemliste
Set WB_Problemliste = Workbooks.Open("O:\Produktion\QS\Fehlerliste\Problemliste.xlsx")
lEintragProblemliste = WB_Problemliste.Sheets("Übersicht").Cells(Rows.Count, 2).End(xlUp). _
Row - 1
If lEintragProblemliste = lEintrUebersicht Then
WB_Problemliste.Close
With ThisWorkbook
.Sheets("Übersicht").Activate
.Sheets("Übersicht").Cells(lEintrUebersicht + 1, 2).Select
End With
MsgBox ("Keine neuen Einträge vorhanden")
Exit Sub
End If
WB_Problemliste.Sheets("Übersicht").Activate
Dim WS As Worksheet
Dim lng_Zaehler As Long
Dim Spalte As String
Call BlattschutzAusProblemliste ' Hier bleibt das Makro stehen. BEI AUFRUF DIESES SUBS _
WIRD DIE VARIABLE WB_PROBLEMLISTE nicht mehr definiert. Warum?
lng_Zaehler = 1
Dim Anz As Integer ' Anzahl der Reihen die Kopiert werden sollen
Anz = 10
For lng_Zaehler = 1 To 10
Select Case lng_Zaehler
Case 1 'In der Übersicht ist die Nr. In Spalte B und gibt es mehr _
Spalten zu kopieren
lEintrUebersicht = WB_Problemliste.Worksheets(lng_Zaehler).Cells(Rows.Count, 2). _
End(xlUp).Row
If lEintrUebersicht >= 10 Then
Anz = lEintrUebersicht - Anz
Else
Anz = 2
End If
Spalte = "M"
Case 2 To 10
lEintrUebersicht = WB_Problemliste.Worksheets(lng_Zaehler).Cells(Rows.Count, 1). _
End(xlUp).Row
If lEintrUebersicht >= 10 Then
Anz = lEintrUebersicht - Anz
Else
Anz = 2
End If
Spalte = "K"
Case Else
End Select
'ThisWorkbook.Worksheets(lng_Zaehler).Activate
Dim WsName As String
WsName = ActiveSheet.Name
Call WB_Problemliste.Worksheets(lng_Zaehler).Range("A" & Anz & ":" & Spalte & _
lEintrUebersicht).Copy(Destination:=WB_Problemliste.Worksheets(lng_Zaehler).Cells(Anz, 1))
With ThisWorkbook
.Sheets(WsName).Activate
.Sheets(WsName).Cells(Anz, 1).PasteSpecial
End With
Next
Call BlattschutzProblemliste
WB_Problemliste.Close
ActiveWorkbook.Save
ThisWorkbook.Sheets("Übersicht").Activate
ThisWorkbook.Sheets("Übersicht").Cells(lEintrUebersicht + 1, 2).Selet
BlattschutzAus
Application.ScreenUpdating = True
End Sub
Sub BlattschutzProblemliste()
Dim Sheet As Worksheet
For Each Sheet In WB_Problemliste.Sheets
With Sheet
.Activate
.Protect Password:="Passwortname", UserInterfaceOnly:=True, DrawingObjects:=True, _
Contents:=True, Scenarios:=True
'Worksheets(Bereich).Protect Password:="Passwortname", UserInterfaceOnly:=True, _
DrawingObjects:=True, Contents:=True, Scenarios:=True
End With
Next
End Sub
Sub BlattschutzAusProblemliste()
Dim Sheet As Worksheet
For Each Sheet In WB_Problemliste.Sheets
With Sheet
.Activate
.Unprotect Password:="Passwortname"
End With
Next
End Sub