Im Folgenden ist der Code, an dem ich gearbeitet habe. Ich erkannte jedoch, dass etwas schief ging, wenn ich ein anderes Arbeitsblatt aus demselben Arbeitsbuch auswählte.Die Variable ist nach der Auswahl eines anderen Arbeitsblatts falsch gegangen. VBA
Die Variable ShiftName
scheint sich zu ändern, wenn sie im folgenden Code durch Sheets("Cash").Select
geht.
Ich glaube, dass die Spalte für ShiftName
von "B" des Arbeitsblattes "ShiftRoster" in "C" von "Cash" geändert wurde, was meine Ausgabe für ShiftName
falsch war.
Ich würde gerne prüfen, ob es eine Möglichkeit gibt, das zu lösen?
Sub Testing()
Sheets("Shift Roster").Select
Range("A1").Select
Cells.Find("LEAVE").Activate
r1 = ActiveCell.Row
Dim ShiftRowName As Integer
Dim ShiftColName As String: ShiftColName = "B"
Dim ShiftColLeave As String: ShiftColLeave = "E"
Dim ShiftName As String
Dim ShiftReason As String
Dim CashRowName As Integer
Dim CashColName As String: CashColName = "C"
Dim CashColLeave As String: CashColLeave = "H"
Dim CashName As String
Dim CashLeave As String
ShiftRowName = r1 + 1
Do While Cells(ShiftRowName, 1) <> ""
ShiftName = Cells(ShiftRowName, ShiftColName)
ShiftReason = Cells(ShiftRowName, ShiftColLeave)
If ShiftName = "" Or IsEmpty(ShiftName) Then
Exit Do
Else
'SOMETHING WENT WRONG FROM HERE ONWARDS
Sheets("Cash").Select
Range("C1").Select
Cells.Find("Name").Activate
r2 = ActiveCell.Row
CashRowName = r2 + 1
Do While Cells(CashRowName, 1) <> ""
CashName = Cells(CashRowName, CashColName).Value
If CashName = "" Or IsEmpty(CashName) Then
Exit Do
Else
MsgBox ShiftName
End If
CashRowName = CashRowName + 1
Loop
End If
ShiftRowName = ShiftRowName + 1
Loop
End Sub
Ja, hör auf 'Select' und die' * .Active ... 'Eigenschaften zu verwenden. Sie sind von Natur aus unzuverlässig und auch langsam. – RBarryYoung
@RBarryYoung was soll ich stattdessen verwenden? – stupidgal
Sie sollten direkte Bereiche verwenden und Ihre Objektinstanzen in Variablen mit 'SET' speichern. – RBarryYoung