kleinelinda
Goto Top

Excel mit VBA

Makros

Hallo Leute,

ich hab ein kleines Problem ich habe von jedem Tag was einer der Kollegen im Betrieb macht eine Excel Tabelle mit dem was sie tun und zu welcher Uhrzeit usw. Die tabelle hat mal 19 mal 16 mal 12 Zeilen, also immer verschiedend. Ich kann ein makro erstellen das mir die Tabelle sortiert nach den Angaben was ich haben will das weiß ich wohl wie das geht, aber da die Tabellen ja immer unterschiedlich sind mit den Zeilenangaben müsste ich ja immer wieder ein neues Makro erstellen. Kann man das irgendwie einstellen oder Prorammieren in Visual Basic das er die Zeilenangabe automatisch berechnet, so das ich das Makro nicht für jede Tabelle neu schreiben muss?

Danke schon mal für Antworten ...

Gruß Linda ..

Content-Key: 61851

Url: https://administrator.de/contentid/61851

Printed on: April 24, 2024 at 04:04 o'clock

Member: bastla
bastla Jun 20, 2007 at 08:51:25 (UTC)
Goto Top
Hallo kleinelinda!

... Prorammieren in Visual Basic das er die Zeilenangabe automatisch berechnet, so das ich das Makro nicht für jede Tabelle neu schreiben muss?
Kann man/frau - muss aber nicht. Wenn Du im Makro anstelle des Bereiches nur eine Zelle angibst, wird es auch bei veränderten Bereichen klappen.

Im folgenden Beispiel habe ich eine Sortierung der Zellen A1:C25 (mit Überschriften) nach der Spalte B (über das Menü "Daten / Sortieren...") sortieren lassen und dabei aufgezeichnet - Ergebnis:
Range("A1:C25").Sort Key1:=Range("B2"), Order1:=xlAscending, Header:= _  
        xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
        DataOption1:=xlSortNormal
Wenn ich nun ":C25" entferne (sieht dann wie unten dargestellt aus), funktioniert das Makro auch mit größeren oder kleineren Bereichen.
Range("A1").Sort Key1:=Range("B2"), Order1:=xlAscending, Header:= _  
        xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
        DataOption1:=xlSortNormal

Grüße
bastla
Member: kleinelinda
kleinelinda Jun 20, 2007 at 08:57:52 (UTC)
Goto Top
also ich hatte das mit dem code :

Sub Makro1()
'
' Makro1 Makro
' Makro am 20.06.2007 von InfosystemeS aufgezeichnet
'

'

Selection.Sort Key1:=Range("K4"), Order1:=xlAscending, Key2:=Range("N4") _
, Order2:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase:= _
False, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal, DataOption2 _
:=xlSortNormal
End Sub


und dann meinte jemand das das damit klappen würde :

LetzteZeile = Range("A65535").End(xlUp).Row

also ich hab nun mal die tabelle mit ein paar zeilen erweiter und er ordnet es mir ohne irgenwelche fehler ..

also sieht mein ganzer code nun so aus:

Sub Makro1()
'
' Makro1 Makro
' Makro am 20.06.2007 von InfosystemeS aufgezeichnet
'

'
LetzteZeile = Range("A65535").End(xlUp).Row
Selection.Sort Key1:=Range("K4"), Order1:=xlAscending, Key2:=Range("N4") _
, Order2:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase:= _
False, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal, DataOption2 _
:=xlSortNormal
End Sub
Member: kleinelinda
kleinelinda Jun 20, 2007 at 09:07:30 (UTC)
Goto Top
aber das ist irgendwie falsch normal sollte das ja dann gehen ohne das ich die zeilen alle kopieren muss oder? wenn ich 19 zeilen hab womit ich den code ja auch erstellt habe klappt es wenn ich dann eine zeile mehr zu tun klappt es nur wenn ich alles makiert habe ...
Member: kleinelinda
kleinelinda Jun 20, 2007 at 09:16:29 (UTC)
Goto Top
ich hab das nun so gemacht wie du es gesagt hattest ich glaub das klappt nun ..

so sieht mein code aus:

Sub Makro1()
'
' Makro1 Makro
' Makro am 20.06.2007 von InfosystemeS aufgezeichnet
'

'
Range("A3").Select

Selection.Sort Key1:=Range("K4"), Order1:=xlAscending, Key2:=Range("N4") _
, Order2:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase:= _
False, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal, DataOption2 _
:=xlSortNormal
End Sub