ich werde noch wahnsinnig.
Folgendes Problem:
Im ersten Codeteil starte ich mit der Sortierung meiner Tabelle. Da dieser Code auf verschiedene Tabellen angewendet wird dachte ich, es wäre gut den Tabellennamen und -bereich jeweils in einer Variable (WSName as string, rngBereich as range) zu speichern.
Dim WsName As String
Dim ls As Long, lz As Long, rngBereich As Range
With ActiveWorkbook.Worksheets(WsName)
.Sort.SortFields.Clear
.Sort.SortFields.Add Key:=Range("A1"), _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
lz = .Cells(.Rows.Count, 1).End(xlUp).Row
ls = .Cells(lz, .Columns.Count).End(xlToLeft).Column
MsgBox ("letzte Zeile ist:" & lz)
MsgBox ("letzte Spalte ist:" & ls)
Set rngBereich = .Range(.Cells(1, 1), .Cells(lz, ls))
End With
Dieser erste Teil funktioniert.
Aber jetzt scheitere ich an dem folgenden Teil:
With ActiveWorkbook.Worksheets(WsName).Sort
.SetRange Range("A1:A2797")
.Header = xlNo
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Frage 1: Wie kann ich das Problerm lösen?
Frage 2: Ich glaube ich habe ein grundsätzliches Problem, wann ich etwas als Range, Worksheet oder String deklarieren muss. Vielleicht schmeisse ich ja auch die verschiedenen Methoden irgendwie durcheinander. Zumindest herrscht diesbezüglich in meinem Kopf ein vollkommenes Chaos. Kann mir jemand eine gute Erklärung in Form von Quellen im Netz oder Büchern empfehlen, die den gordischen Knoten in meinem Kopf zerschlagen?
Vollkommen zerknirscht,
Peter