Das Notes Forum
Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: Blackraven am 11.03.05 - 13:21:35
-
hallo,
möchte eine Sortierung von Daten in Excel per Lotusscript erstellen.
Sortiert werden soll nach 1.Spalte A und dann Spalte B:
Sortierung ohne Header funktioniert:
xlApp.WorkBooks(1).Sheets(2).Select
Set xlSheet = xlApp.WorkBooks(1).ActiveSheet
xlSheet.Cells.Select 'Gesamtes Arbeitsblatt markieren
xlApp.Selection.Sort xlSheet.Columns("A"), xlAscending , "",_
xlSheet.Columns("B"), xlAscending , xlSheet.Columns("C"),_
xlAscending, xlGuess,1, False, xlTopToBottom
Aber wie stell ich das an, wenn die Daten die ich sortieren will, erst ab Zeile 7 vorhanden sind?
D.H. Zeile 6 (Header), Spalten A-E??
Ich komm grad da nicht weiter.
-
Habe es jetzt nicht aktuell im Zugriff, aber mit xlSheet.Range und dann einem Selct auf das Range solltest du weiterkommen
-
Hab ich mal versucht, aber anscheinend bin ich "unfähig" ;-)
bin da leider nicht sooooo fit :-(
-
Hi,
dein Aufruf
xlApp.Selection.Sort xlSheet.Columns("A"), xlAscending , "",_
xlSheet.Columns("B"), xlAscending , xlSheet.Columns("C"),_
xlAscending, xlGuess,1, False, xlTopToBottom
mit dem Parameter xlGuess ist soweit richtig. Du darfst nur nicht das gesamte Arbeitsblatt markieren, sondern nur den Bereich, den du sortieren willst.
Mit diesem Aufruf
xlSheet.Range("A7:B12").Select
markierst du den Bereich von Zeile 7 bis 12 in den Spalten A und B
Axel
-
Also....
ich hab jetzt gebaut: Zeile 6 ist die Kopfzeile.
row1 letzte Zeile, wird über Schleife gezählt.
Set xlSheet = xlApp.WorkBooks(1).ActiveSheet
Dim srange As String
range = "A6:E"+Cstr(row1)
xlSheet.Range(srange).Select
xlApp.Selection.Sort xlSheet.Columns("A"), xlAscending , "", xlSheet.Columns("B"),xlAscending ,xlGuess,1, False, xlTopToBottom
da stimmt aber irgendwas nicht mit, bekomm nen Fehler:
"Microsoft Excel: Reference is not valid"
-
Hi,
hier liegt der Fehler:
Dim srange As String
range = "A6:E"+Cstr(row1)
xlSheet.Range(srange).Select
Das müsste wohl
srange = "A6:E"+Cstr(row1)
heißen.
Alerdings bin ich mir nicht ganz sicher, ob es als String-Variable funktioniert. Bei musste ich es als Variant-Wert übergeben.
Axel
-
das war im Endeffekt nur ein schreibfehler mit srange und range.
Die Fehlermeldung war die gleiche.
jetzt hab ich einfach mal den oberen Beschriftungsteil entfernt, damit ich in der 1.Zeile den Header habe, und ab Zeile 2 dann die Daten.
Witzigerweise habe ich 2 Sheets mit der gleichen Formel sortieren wollen.
1.Sheet, Kopfzeile wird mit in die Sortierung eingebunden.
2.Sheet, Kopfzeile fest, rest wird korrekt sortiert.
Das macht doch keinen Spass :-(
-
Hi,
hast du das auch mal versucht als Variant-Wert zu übergeben?
Axel
-
xlApp.WorkBooks(1).Sheets(1).Select
Set xlSheet = xlApp.WorkBooks(1).ActiveSheet
xlSheet.Range("A6:E12").Select
xlApp.Selection.Sort xlSheet.Columns("A"), xlAscending , "", xlSheet.Columns("B"),xlAscending ,xlGuess,1, False, xlTopToBottom
gleicher Fehler :-(
liegt also nicht am variant, muss irgendwie in der Sortierformel liegen.
genauso warum läuft der Code unterschiedlich bei 2 versch. Sheets ??
xlApp.WorkBooks(1).Sheets(2).Select
Set xlSheet = xlApp.WorkBooks(1).ActiveSheet
xlSheet.Cells.Select 'Gesamtes Arbeitsblatt markieren
xlApp.Selection.Sort xlSheet.Columns("A"), xlAscending , "", xlSheet.Columns("B"), xlAscending , xlSheet.Columns("C"), xlAscending, xlGuess,1, False, xlTopToBottom
-
Hi,
mal 'ne ganz andere Frage. Ich gehe zwar davon aus, dass du es gemacht hast, aber nur um sicher zu gehen.
Die Konstanten xlAscending, xlGuess usw. hast du entsprechend initialisiert, oder ?
Axel