Excelliste sortieren

Hallo,

habe eine Excelliste per VB gefüllt und möchte diese nun nach 2 Spalen sortieren:

For nRow = 1 To ListView1.ListItems.Count
With ListView1.ListItems(nRow)
ExcelWorksheet.Cells(nRow, 1).Value = .Text
For nCol = 1 To ListView1.ColumnHeaders.Count - 1
ExcelWorksheet.Cells(nRow, nCol).Value = .SubItems(nCol)
Next nCol
End With
Next nRow

Was muss ich tun?
Besten Dank.

Gruß
Gunter

habe eine Excelliste per VB gefüllt und möchte diese nun nach
2 Spalen sortieren:
For nRow = 1 To ListView1.ListItems.Count
With ListView1.ListItems(nRow)
ExcelWorksheet.Cells(nRow, 1).Value = .Text
For nCol = 1 To ListView1.ColumnHeaders.Count - 1
ExcelWorksheet.Cells(nRow, nCol).Value =
.SubItems(nCol)
Next nCol
End With
Next nRow

Hi Gunter,

in Excel-Vba kann man eine ListBox mit einem Vba-Einzeiler mit den Werten eines Excelzellenbereichs (Range) befüllen.
Von daher müßte es evtl. auch möglich sein dies umgekehrt zu tun, also einen Excel-Range bereich mit dem Inhalt einer ListBox zu befüllen.

Jetzt hast du da aber ein ListView-Objekt und keine Listbox und ListView kenne ich nicht so.

Dazu kommt, in Excl-Vba sortiert man über 2 Saplten so:

Range(„A1:B4“).Sort Key1:=Range(„A1“), Order1:=xlAscending, Key2:=Range(„B1“) _
, Order2:=xlDescending, Header:=xlYes, OrderCustom:=1, MatchCase:= _
False, Orientation:=xlTopToBottom

Nur, ich weiß nicht wie man das über VB referenziert.

Wenn dir das nicht weiterhilft, dann poste mal bitte einen kompletten Code der von VB aus eine Exceldatei erstellt und dann mit deinem geposteten Code befüllt.

Problem könnte sein, ich habe nur VB5.0,vielleicht klappt der ja sowieso nicht.

In dem Zusammenhang, bitte immer angeben,welche Vb Version und in dem Fall auch, welche Excelversion.

Wobei mir schon klar ist, wenn du da eine VB.Exe bastelst, die auf Fremdrechnern laufen soll, so weißt du ja gar nicht welche Excelversion da vorhanden ist.

„Sort“ kennen alle Excelversionen, aber die Anzahl der Parameter unterscheidet sich.

Meine obigen Sort-Parameter kommen von Excel 2000, d.h. Excel2003, Excel2007 kennen die auch, also nimm nur die.
(2003, 2007, kennen mehr parameter.)

Gruß
Reinhard

Hallo Reinhard,

habe mit viel ‚try and error‘ die Lösung gefunden. Es ist eine einzige Zeile notwendig:

ExcelWorksheet.Columns.Sort Key1:=Range(„A1“), Key2:=Range(„E1“)

Trotzdem vielen Dank.

Ich bastle das Programm nur für mich und habe damit keine Probleme mit anderen Konfigurationen.

Jetzt suche ich nur noch eine Möglichkeit meine Hilfsspalte „E1“ nach dem Sortieren ebenso elegant wieder zu löschen.

Gruß
Gunter

Hi Gunter,

in Excel-Vba kann man eine ListBox mit einem Vba-Einzeiler mit
den Werten eines Excelzellenbereichs (Range) befüllen.
Von daher müßte es evtl. auch möglich sein dies umgekehrt zu
tun, also einen Excel-Range bereich mit dem Inhalt einer
ListBox zu befüllen.

Jetzt hast du da aber ein ListView-Objekt und keine Listbox
und ListView kenne ich nicht so.

Dazu kommt, in Excl-Vba sortiert man über 2 Saplten so:

Range(„A1:B4“).Sort Key1:=Range(„A1“), Order1:=xlAscending,
Key2:=Range(„B1“) _
, Order2:=xlDescending, Header:=xlYes, OrderCustom:=1,
MatchCase:= _
False, Orientation:=xlTopToBottom

Nur, ich weiß nicht wie man das über VB referenziert.

Wenn dir das nicht weiterhilft, dann poste mal bitte einen
kompletten Code der von VB aus eine Exceldatei erstellt und
dann mit deinem geposteten Code befüllt.

Problem könnte sein, ich habe nur VB5.0,vielleicht klappt der
ja sowieso nicht.

In dem Zusammenhang, bitte immer angeben,welche Vb Version und
in dem Fall auch, welche Excelversion.

Wobei mir schon klar ist, wenn du da eine VB.Exe bastelst, die
auf Fremdrechnern laufen soll, so weißt du ja gar nicht welche
Excelversion da vorhanden ist.

„Sort“ kennen alle Excelversionen, aber die Anzahl der
Parameter unterscheidet sich.

Meine obigen Sort-Parameter kommen von Excel 2000, d.h.
Excel2003, Excel2007 kennen die auch, also nimm nur die.
(2003, 2007, kennen mehr parameter.)

Gruß
Reinhard

Hallo Günter,

ExcelWorksheet.Columns.Sort Key1:=Range(„A1“),
Key2:=Range(„E1“)

Jetzt suche ich nur noch eine Möglichkeit meine Hilfsspalte
„E1“ nach dem Sortieren ebenso elegant wieder zu löschen.

vielleicht so:

ExcelWorksheet.Columns(5).Delete

Gruß
Reinhard

Hallo Reinhard,

genau so hat es funktioniert.

Besten Dank.

Gruß
Gunter

Hallo Günter,

vielleicht so:

ExcelWorksheet.Columns(5).Delete

Gruß
Reinhard