Excel spalte alphabetisch sortieren mit VB

win98

Grünschnabel
hallo,

ich möchte über VB die C spalte in excel aufsteigend sortieren. mit einem VBA makro hab ich das hinbekommen (siehe grüner code) ich möchte aber jetzt an der stelle einen VB code haben.

wie mach ich das am geschicktesten?

Visual Basic:
Private Sub btnPlanIds_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnPlanIds.Click

Dim xliApp = CreateObject("EXCEL.APPLICATION")
Dim xliWB = xliApp.Workbooks.Open(pfad_i)

'Cells.Select

'Selection.Sort Key1:=Range("C1"), Order1:=xlAscending, Header:= _
'xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
'DataOption1:=xlSortNormal

xliWB.Close()
xliWB = Nothing
xliApp = Nothing

End Sub
 
Zuletzt bearbeitet:
Im Prinzip funktioniert das ganze schon so, wie du dir das gedacht hast (Excel-Makro aufzeichnen und das verwenden), dabei gibt es aber noch ein paar Sachen zu beachten.

In deinem Fal musst du natürlich vor die auskommentierten Anweisungen noch das xliWB setzen, also würde das so aussehen:
Visual Basic:
xliWB.Cells.Select

xliWB.Selection.Sort Key1:=Range("C1"), Order1:=xlAscending, Header:= _
xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal

Es gibt aber noch das Problem, dass diese VBA-Konstanten ala xlAscending, xlGuess usw. in VB nicht deklariert sind, du müsstest die reelen Werte einfügen oder sie ganz streichen (die meisten Werte sind eh die Standardwerte). In deine Fall würde das ganze so aussehen (Konstanten durch die entsprechenden Werte ersetzt):
Visual Basic:
xliWB.Columns("C:C").Select

xliWB.Selection.Sort Key1:=Range("C1"), Order1:=1, Header:= _
0, OrderCustom:=1, MatchCase:=False, Orientation:=1, _
DataOption1:=0


Der Doc!
 
vielen dank für die ausführliche antwort.

wenn ich so deinen code verwende, hab ich einen fehler (blau unterstrichen "nicht deklariert") bei "Range("C1")". geh auch nich weg wenn ich stattdessen Cells(1,3) schreibe.

deswegen hab ichs so gemacht: (weil die sortierung soll im sheet "pro_node" passieren)

Visual Basic:
xliWB.Columns("C:C").Select()

xliWB.Selection.Sort(Key1:=xliWB.Sheets("pro_node").Range("C1"), Order1:=1, Header:= _
        0, OrderCustom:=1, MatchCase:=False, Orientation:=1, _
        DataOption1:=0)

jetzt ist nix mehr unterstrichen.

wenn ich es laufen lassen will möchte er gleich in der ersten zeile debuggen. fehler : "typ workbook wurde nicht gefunden"

deswegen hab ich es so erstetzt:
Visual Basic:
xliWB.Sheets("pro_node").Columns("C:C").Select()

xliWB.Selection.Sort(Key1:=xliWB.Sheets("pro_node").Range("C1"), Order1:=1, Header:= _
        0, OrderCustom:=1, MatchCase:=False, Orientation:=1, _
        DataOption1:=0)

dann geht er weiter und ich bekomm genau den selben fehler in zeile 3 und deswegen hab ich das jetzt so stehn:

Visual Basic:
xliWB.Sheets("pro_node").Columns("C:C").Select()

xliWB.Sheets("pro_node").Selection.Sort(Key1:=xliWB.Sheets("pro_node").Range("C1"), Order1:=1, Header:= _
        0, OrderCustom:=1, MatchCase:=False, Orientation:=1, _
        DataOption1:=0)
jetzt bringt er mit den fehler "typ worksheet wurde nicht gefunden"

warum? ich hab doch angegeben sheets("pro_node").

weißt du worans liegen könnte?
 
Hallo,

ich habe mir eine Liste erstellt und möchte die über mehrere Spalten Sortieren, ab Zeile 5 d.h. erst Spalte E absteigend sortieren und dann Spalte D absteigend etc.! So über benutzerdifiniertes sortiern kann ich, aber ich möchte gerne eine Grafik einfügen, die dann einen Befehl hat das er mir das Sortiert. Ich weiß das man das über Visual Basic machen kann benutze Microsoft Excel 2007

Ich kann auch jemanden die Datei per E-mail schicken!

MFG Elwert
 
Zuletzt bearbeitet:
Zurück