Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1356to1360
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Range oder String

Range oder String
27.04.2014 12:01:27
Peter
Hallo,
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

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Range oder String
27.04.2014 12:30:42
Peter
Frage 1 hat sich gerade geklärt
.SetRange rngBereich
ist die Lösung.
Aber wenn jemand was zu meinem verzweifelten Aufruf in Frage 2 sagen könnte...:-)

AW: Range oder String
27.04.2014 12:37:10
Hajo_Zi
Hallo Petere,
was ist da offen
Range ist eine Zelle, Zellbereich
Worksheets ist eine Tabelle und
String ist eine Zeichenkette.

AW: Range oder String
27.04.2014 12:41:48
Peter
Offen ist die Frage, ob es eventuell eine Quelle gibt, die einem Dösbattel wie mir die Augen öffnet. Für einen erfahrenen Coder ist das sicher alles kein Problem, aber ein Neueinsteiger hat da halt seine Probleme - wie man vielleicht daran erkennen kann, dass ich an dieser, doch recht banal erscheinenden Lösung, etwa 1 Std. gefummelt habe.
Gruß,
Peter

Anzeige
AW: Range oder String
27.04.2014 13:52:49
Tino
Hallo,
eigentlich brauchst Du die Tabelle nicht mit anzugeben, weil der Rangebereich schon darauf verweist.
Wichtiger wäre anzugeben nach welcher Spalte sortiert werden soll und ob
dieser eine Überschrift hat oder nicht und die Sortierrichtung.
Beispiel:
Sub test()
Sort_ Tabelle1.Range("A:C"), 1, xlNo, xlAscending
End Sub


Sub Sort_(rngBereich As Range, lngSortColum&, xlHeader As XlYesNoGuess, xlSortOrder As xlSortOrder)

With rngBereich.Parent.Sort
    .SortFields.Clear
    
    .SortFields.Add Key:=rngBereich.Cells(1, lngSortColum), _
     SortOn:=xlSortOnValues, Order:=xlSortOrder, DataOption:=xlSortNormal
     
    .SetRange rngBereich
    .Header = xlHeader
    .MatchCase = False
    .Orientation = xlTopToBottom
    .SortMethod = xlPinYin
    .Apply
    
    .SortFields.Clear
End With
End Sub
Gruß Tino

Anzeige
AW: Range oder String
27.04.2014 14:18:13
Peter
Oha, das erscheint mir wie etwas für die Fortgeschrittenen. Da lass ich lieber erst mal die Finger von. Trotzdem Danke :-)

Quelle: VBEditor-Hilfe nicht ausreichend, ...
27.04.2014 14:31:41
Luc:-?
…Peter?
Viell dann auch mal ins Objektmodell schauen und den Unterschied zwischen Objekten und normalen Daten eruieren! Objekte wie Range können Daten enthalten, die ein Text (String=Zeichenkette), eine Zahl (inkl Sonderfall Datum/Zeit), ein Datenfeld (aus MatrixFml), ein Wahrheits- oder Fehlerwert sein können. Objekte können 2 Arten von Eigenschaften haben, welche, die in irgendeiner Form einen Datenwert bezeichnen, und solche, die selbst wieder (nachgeordnete Kind-)Objekte begründen. Solche „Kinder“ (in anderen Sprachen auch über child erreichbar) haben also „Eltern“, weshalb man mit Range(…).Parent das jeweilige Worksheet (als Objekt) erhält. Demggüber haben Daten keine Eigenschaften, nur (vordefinierte) Wertebereiche, eben String, Long, Double u.a., als Datenfeld auch noch Dimensionen. Lässt man die Eigenschaftsdefinition/-deklaration weg, erhält man Daten vom Typ Variant, die Daten aller Typen umfassen können. Handelt es sich dabei um ein komplettes Datenfeld, spricht man in VBA von einem Variant, der ein Datenfeld enthält, was nicht dasselbe wie ein vordefiniertes Datenfeld bestimmten Typs und ebensolcher Dimensionierung ist. In anderen Sprachen sind diese Variants nämlich ebenfalls Objekte (Arrays ), in VBA haben sie wohl eher einen „Quasi-Objekt-Status“, sind also offiziell keine, während das Sammlungen (Collections ) und das Dictionary-Objekt, denen diese Arrays ähneln, durchaus sind. Die mehr­dimensionale Standard-Array-Form in VBA hat damit allerdings nichts zu tun.
Gruß + schöSo, Luc :-?

Anzeige
AW: Quelle: VBEditor-Hilfe nicht ausreichend, ...
27.04.2014 15:02:08
Peter
Das hört sich doch schon mal vielversprechend an.
Danke

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige