AW: VBA beispiel Registerübergreifend
20.01.2007 17:40:05
Daniel
Hallo
wenn du die Anzeige der Rundenzahlen in einem anderen Registerblatt machen willst als die Eingabe, dann musst du vor jeden Zellbezug, der sich auf ein anderderes Registerblatt als das gerade aktvie bezieht, das gemeinte Registerblatt in dieser Form davorschreiben:
sheets("Runden").range(xxx)
Das Makro sieht dann so aus (ich gehe mal davon aus, daß du das zweite Blatt "Runden" genannt hast)
Sub runden()
Application.EnableEvents = False
Dim Name As String
Dim zeile As Long
Name = [e1]
On Error Goto Fehler
zeile = sheets("Runden").Columns("a:a").Find(What:=Name, LookIn:=xlValues).Row
If Name <> "" Then
sheets("Runden").Cells(zeile, 2) = sheets("Runden").Cells(zeile, 2) + 1
sheets("Runden").Range("A1").Sort Key1:=sheets("Runden").Range("B2"), Order1:=xlDescending, Key2:=sheets("Runden").Range("A2") _
, Order2:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase:= _
False, Orientation:=xlTopToBottom
[e1].ClearContents
Application.EnableEvents = True
Exit Sub
End If
Fehler:
MsgBox ("Startnummer " & Name & " nicht vorhanden")
[e1].ClearContents
Application.EnableEvents = True
End Sub
Etwas verkürzen kannst du die Sachen noch, wenn du die With-Klammer verwendest.
in der With-Klammer wird ein Objekt definiert, wenn du dieses Objekt im Code verwenden willst, brauchst du nur noch den Punkt zu setzen.
Wichtig ist, daß die With-Klammer auch wieder mit END WITH geschlossen wird.
Beispiel:
ohne With-Klammer
Sheets("Eingabe").Range("e1").value = ""
mit With-Klammer
with sheets("Eingabe")
.range("e1").value = ""
end with
Gruß, Daniel
(achtung, Code nicht getestet, ich hoffe ich habe nichts vergessen)