# Excel spalte alphabetisch sortieren mit VB



## win98 (15. Februar 2010)

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?


```
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
```


----------



## DrSoong (15. Februar 2010)

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:

```
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):

```
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!


----------



## win98 (15. Februar 2010)

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)


```
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:

```
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:


```
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?


----------



## Elwert (17. November 2010)

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


----------

