Mehrspaltigen Bereich per VBA sortieren

04/09/2007 - 17:15 von eoleo.ftp | Report spam
Hallo,

ein 'armer' C++-Programmierer braucht Hilfe bei einem Sortierproblem.

Meine Arbeitsmappe umfasst mehrere Arbeitsblàtter (Anzahl
unbedeutend), die jeweils eine Woche repràsentieren. Der Benutzer
protokolliert darin seine Arbeitstàtigkeit. Jedes Feld entspricht
dabei der Zeitdauer von 15 Minuten.

Um die Daten zu einer Wochenstatistik bzw. Monatsstatistik
zusammenzustellen, durchlaufe ich die Arbeitsblàtter der Reihe nach,
lese die Feldwerte aus, zwischenspeichere sie in einem temporàren Feld
(Arrray), um sie dann in das Arbeitsblatt "Statistik" zu schreiben. So
weit so gut.

Die Spalten im Arbeitsblatt "Statistik" sollen jetzt sortiert werden.
Jeweils zwei Spalten repràsentieren eine Woche. Dabei enthàlt die
erste Spalte die Dauer, die 2. die Art der Arbeit.

W01_Dauer, W01_Arbeit | W02_Dauer, W02_Arbeit | W03_Dauer, W03_Arbeit
| W04_Dauer, W04_Arbeit | etc.

Der nachfolgende Code-Abschnitt zeigt, wie ich einen gewünschten
Bereich markieren kann.

Dim asSheetName as String
asSheetName = "Sheet1"
Dim iSpalte, giZeilen as Integer
iSpalte = 2
giZeilen = 100

Worksheets(asSheetName).Range(Cells(0, iSpalte), Cells(giZeilen,
iSpalte - 1)).Select

Nur leider gelingt es mir nicht, in àhnlicher Weise die Sort.Methode
auszuführen.

Beispiel:
Worksheets(asSheetName).Range(Cells(0, iSpalte), Cells(giZeilen,
iSpalte - 1)).Sort _
Key1:=Worksheets(asSheetName).Range(Cells(iZeilenOffset, iSpalte)),
Order1:=xlAscending, Header:=xlGuess, _ OrderCustom:=1,
MatchCase:=False, Orientation:=xlTopToBottom

Zur Laufzeit erhalte ich die Fehlermeldung: Fehler 1004: Anwendungs-
oder Objektorientierter Fehler

Hat jemand eine Idee?

Gruß
Leo
 

Lesen sie die antworten

#1 Wolfgang Habernoll
05/09/2007 - 00:35 | Warnen spam
Hallo Leo

schrieb im Newsbeitrag
news:
Hallo,

ein 'armer' C++-Programmierer braucht Hilfe bei einem Sortierproblem.



oooja :-(
ich versuche es mal

Meine Arbeitsmappe umfasst mehrere Arbeitsblàtter (Anzahl unbedeutend)
snip

Der nachfolgende Code-Abschnitt zeigt, wie ich einen gewünschten
Bereich markieren kann.

Dim asSheetName as String
asSheetName = "Sheet1"
Dim iSpalte, giZeilen as Integer



nebenbei, das geht so nicht in XL-VBA, iSpalte bleibt Variant

iSpalte = 2
giZeilen = 100
Worksheets(asSheetName).Range(Cells(0, iSpalte), Cells(giZeilen,
iSpalte - 1)).Select



Cells(0, x) geht nicht, Cells beginnt bei 1

Nur leider gelingt es mir nicht, in àhnlicher Weise die Sort.Methode
auszuführen.

Beispiel:
Worksheets(asSheetName).Range(Cells(0, iSpalte), Cells(giZeilen,
iSpalte - 1)).Sort _
Key1:=Worksheets(asSheetName).Range(Cells(iZeilenOffset, iSpalte)),
Order1:=xlAscending, Header:=xlGuess, _ OrderCustom:=1,
MatchCase:=False, Orientation:=xlTopToBottom



als 0 geht nicht, und lass im Key den Range weg also so

Worksheets(asSheetName).Range(Cells(1, iSpalte), Cells(giZeilen, iSpalte -
1)).Sort _
Key1:=Worksheets(asSheetName).Cells(iZeilenOffset, iSpalte),
Order1:=xlAscending, _
Header:=xlGuess, OrderCustom:=1, MatchCase:=False,
Orientation:=xlTopToBottom

Zur Laufzeit erhalte ich die Fehlermeldung: Fehler 1004: Anwendungs-
oder Objektorientierter Fehler

Hat jemand eine Idee?



ich hoffe das klappt

mfG
Wolfgang Habernoll

[ Win XP Home SP-2 , XL2002 ]

Ähnliche fragen