Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
556to560
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
556to560
556to560
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

mein makro sortiert nicht

mein makro sortiert nicht
27.01.2005 18:58:39
dieter-j
Hallo Forum,
mit hilfe des recorders und eines makroteiles von r.sch. habe ich dieses makro gebastelt; es meckert zwar nicht- geht aber auch nicht.
es soll sorteieren ab zelle b6 bis zur letzen zeile und spalte, die es selbst sucht. Wo muss ich was ändern? eigentlich hiess es dort range("b6:b30")
b30 habe ich gelöscht und ersetzt durch:
(Cells(1, 1), Cells(letzteZeile, letzteSpalte))
danke für euren tip.
gruss dieter

Sub sortieren()
Range("B6:(Cells(1, 1), Cells(letzteZeile, letzteSpalte))").Select
Selection.Sort Key1:=Range("B6"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
End Sub

17
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: mein makro sortiert nicht
27.01.2005 19:24:10
Ramses
Hallo
dass EXCEL da nicht meckert glaub ich nicht.

Sub sortieren()
Range(Cells(6, 2), Cells(letzteZeile, letzteSpalte)).Sort Key1:=Range("B6"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
End Sub

Wobei ich nicht weiss, von wo aus die Variablen
LetzteZele
und
LetzteSpalte
ihre Werte erhalten. Wenn du da keine WErte übergibst, funktioniert es auch damit nicht.
Gruss Rainer
dieses auch nicht, ramses; deshalb ...
27.01.2005 21:00:33
dieter-j
Hallo ,
leider geht dein vorschlag auch nicht.
diese beiden makros hab ich.
und nun hab ich aus dem ersten den =range aus der letzten zeile genommen
un in Makro 2 im ersten Range eingefügt. Wie gesagt, Ahnung habe ich keine- try and error and hier im forum fragen....
gruss dieter

makro 1 druckbereichfestlegen
Option Explicit
Dim letzteZeile, letzteSpalte


Sub druckbereichfestlegen()
letzteZeile = Cells.SpecialCells(xlCellTypeLastCell).Row
letzteSpalte = Cells.SpecialCells(xlCellTypeLastCell).Column
ActiveWorkbook.Names.Add Name:="Druckbereich", RefersToR1C1:=Range(Cells(1, 1), Cells(letzteZeile, letzteSpalte))
End Sub

........................................................................
Makro 2 sortieren

Sub sortieren()
Range("B6:O28").Select
Selection.Sort Key1:=Range("B6"), Order1:=xlAscending, Header:=xlNo, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
End Sub

...............................................................................
Anzeige
Konnte ja auch nicht....
27.01.2005 21:09:54
Ramses
Hallo
weil die Variablen keinen Wert enthalten, aber das habe ich ja auch geschrieben

Sub sortieren()
Dim letzteZeile As Integer
Dim letzteSpalte As Integer
letzteZeile = Cells.SpecialCells(xlCellTypeLastCell).Row
letzteSpalte = Cells.SpecialCells(xlCellTypeLastCell).Column
Range(Cells(6, 2), Cells(letzteZeile, letzteSpalte)).Sort Key1:=Range("B6"), Order1:=xlAscending, Header:=xlNo, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
End Sub

Gruss Rainer
Glaub ich. Aber jetzt kommts...
27.01.2005 22:00:31
dieter-j
Oooh, es funzt. freufreu. Danke Ramses.
jetzt fehlt mir nur noch der befehl,
das die beiden -unten stehenden- makros hintereinanderablaufen
und an den drucker übergeben werden.
denn mit

Sub tablledrucken()
Range("B6:O31").Select
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
End 

Sub
werd ich´s  wohl nicht bis zum ende schaffen...
gruss dieter
makro 1 druckbereichfestlegen
Option Explicit
Dim letzteZeile, letzteSpalte

Sub druckbereichfestlegen()
letzteZeile = Cells.SpecialCells(xlCellTypeLastCell).Row
letzteSpalte = Cells.SpecialCells(xlCellTypeLastCell).Column
ActiveWorkbook.Names.Add Name:="Druckbereich", RefersToR1C1:=Range(Cells(1, 1), Cells(letzteZeile, letzteSpalte))
End Sub

........................................................................
Makro 2 sortieren

Sub sortieren()
Dim letzteZeile As Integer
Dim letzteSpalte As Integer
letzteZeile = Cells.SpecialCells(xlCellTypeLastCell).Row
letzteSpalte = Cells.SpecialCells(xlCellTypeLastCell).Column
Range(Cells(6, 2), Cells(letzteZeile, letzteSpalte)).Sort Key1:=Range("B6"), Order1:=xlAscending, Header:=xlNo, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
End Sub

Anzeige
Das sollte es sein....
27.01.2005 22:44:08
Ramses
Hallo
Option Explicit

Sub sortieren_und_drucken()
Dim letzteZeile As Integer
Dim letzteSpalte As Integer
letzteZeile = Cells.SpecialCells(xlCellTypeLastCell).Row
letzteSpalte = Cells.SpecialCells(xlCellTypeLastCell).Column
'Druckbereich festlegen
With ActiveSheet.PageSetup
.PrintArea = Range(Cells(6, 2), Cells(letzteZeile, letzteSpalte))
End With
'Sortieren
Range(Cells(6, 2), Cells(letzteZeile, letzteSpalte)).Sort Key1:=Range("B6"), Order1:=xlAscending, Header:=xlNo, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
'Ausdruck starten
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
'Druckbereich zurücksetzen
With ActiveSheet.PageSetup
.PrintArea = ""
End With
End Sub

Gruss Rainer
Anzeige
printArea eigenschaft fehlt ?
28.01.2005 07:14:34
dieter-j
Hallo Rainer, danke für deine Mühe.
Excel meint nun:
"Die prinarea-eigenschaft des PageSetup-Objektes kann nicht festgelegt werden."
gruss dieter
AW: printArea eigenschaft fehlt ?
28.01.2005 08:33:47
Ramses
Hallo
Sorry,... Excel versteht die Range-Anweisung offensichtlich nicht.

Sub sortieren_und_drucken()
Dim letzteZeile As Integer
Dim letzteSpalte As Integer
letzteZeile = Cells.SpecialCells(xlCellTypeLastCell).Row
letzteSpalte = Cells.SpecialCells(xlCellTypeLastCell).Column
'Druckbereich festlegen
With ActiveSheet.PageSetup
.PrintArea = Cells(6, 2).Address & ":" & Cells(letzteZeile, letzteSpalte).Address
End With
'Sortieren
Range(Cells(6, 2), Cells(letzteZeile, letzteSpalte)).Sort Key1:=Range("B6"), Order1:=xlAscending, Header:=xlNo, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
'Ausdruck starten
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
'Druckbereich zurücksetzen
With ActiveSheet.PageSetup
.PrintArea = ""
End With
End Sub


Gruss Rainer
Anzeige
du musst dich nicht entschuldigen; syntaxfehler
28.01.2005 10:49:27
dieter-j
hallo rainer, du musst dich nicht entschuldigen- schliesslich tust du mir einen gefallen.
wenn du noch magst; excel sagt syntaxfehler und unterlegt diesen text:
Range(Cells(6, 2), Cells(letzteZeile, letzteSpalte)).Sort Key1:=Range("B6"), Order1:=xlAscending, Header:=xlNo,
Aber ! ich kann doch die makros auch hintereinander ablaufen lassen;
erst sortieren,dann druckbereich, dann,drucken;
auch habe ich festgestellt , dass es besser sein wird, wenn ich die letze Spalte festlege.(in diesem falle O -nicht Null) Dann ist nur die letzte zeile unbekannt und muss vom makro gesucht werden.
ich weiss nur nicht, wo im makro ich das hinschreiben soll.
gruss dieter
Anzeige
AW: du musst dich nicht entschuldigen; syntaxfehler
28.01.2005 12:24:44
Ramses
Hallo
Den Fehler kann ich nicht nachvollziehen, bei mir funktioniert der Code einwandfrei.
Das habe ich auch heute morgen noch getestet. Vielleicht ist das ein Kopierfehler aus dem Browser.
Diese Zeile muss in einer Zeile stehen
Range(Cells(6, 2), Cells(letzteZeile, letzteSpalte)).Sort Key1:=Range("B6"), Order1:=xlAscending, Header:=xlNo,OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
Wo wird in dem Code wohl die Anweisung für die letzte Spalte stehen ? ;-)
Ersetze "LetzteSpalte" mit der Zahl für die Spalte "O" = 15
Range(Cells(6, 2), Cells(letzteZeile, 15)).Sort Key1:=Range("B6"), Order1:=xlAscending, Header:=xlNo,OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
Gruss Rainer
Anzeige
der fehler war ein under
28.01.2005 22:17:51
dieter-j
Hallo rainer, der Fehler war einunderstore, statt deinem Komma; jetzt läuft das makro;
allerdings druckt es nich alles aus.
ich hab die datei mal hochgeladen.

Die Datei https://www.herber.de/bbs/user/17084.xls wurde aus Datenschutzgründen gelöscht

schaust du nochmal rein? danke.
gruss dieter
AW: der fehler war ein under
29.01.2005 08:38:14
Ramses
Hallo
Weder Daten noch Makro in der Tabelle !!
Hast du die richtige Datei geladen ?
Gruss Rainer
jetzt aber.....
29.01.2005 09:48:13
dieter-j
https://www.herber.de/bbs/user/17090.xls
falls wieder nicht ; bitte hier: www.zahnimport.de/forum.xls
schaust du nochmal rein? danke.
gruss dieter
Hallo rainer, der Fehler war einunderstore, statt deinem Komma; jetzt läuft das makro;
allerdings druckt es nicht alles aus.
ich hab die datei mal hochgeladen.

Die Datei https://www.herber.de/bbs/user/17084.xls wurde aus Datenschutzgründen gelöscht

schaust du nochmal rein? danke.
gruss dieter
Anzeige
AW: jetzt aber.....
29.01.2005 10:13:05
Ramses
Hallo
das ist ja logisch, dass es nicht alles ausgedruckt hat, aber das waren die Daten die ich von Dir erhalten habe.
Option Explicit
Dim letzteZeile, letzteSpalte

Sub sortieren_und_drucken()
Dim letzteZeile As Integer
Dim letzteSpalte As Integer
letzteZeile = Cells.SpecialCells(xlCellTypeLastCell).Row
letzteSpalte = 14
'Druckbereich festlegen
With ActiveSheet.PageSetup
.PrintArea = Cells(1, 2).Address & ":" & Cells(letzteZeile, letzteSpalte).Address
.PrintTitleRows = "$1:$5"
.LeftHeader = "&D&SWoche:"
.RightHeader = "Woche : " & Range("L1").Value
.LeftFooter = ""
.CenterFooter = ""
.RightFooter = "&P / &N"
End With
'Sortieren
Range(Cells(6, 2), Cells(letzteZeile, letzteSpalte)).sort Key1:=Range("B6"), Order1:=xlAscending, Header:=xlYes, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
'Ausdruck starten
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
'Druckbereich zurücksetzen
With ActiveSheet.PageSetup
.PrintArea = ""
End With
End Sub

Das Makro "Workbooks_BeforePrint" unter "Diese Arbeitsmappe" musst du löschen
Ebenso die Variablen "Dim letzteZeile, letzteSpalte" die noch unter "Tabelle1" stehen.
Gruss Rainer
Anzeige
AW: jetzt aber schon viel besser.....
29.01.2005 13:26:20
dieter-j
https://www.herber.de/bbs/user/17107.xls
Hallo rainer, jetzt klappt es ganz gut.
ich habe das layout verändert und die makros zugeordnet.
Und dein makro ein wenig an meine bedürfnisse angepasst. soweit ich das "verstehe".
allerdings "springt"irgendetwas "nicht zurück"; die letzte benutze -also ausgedruckte- zeile bleibt immer bestehen;
Zum test habe ich in zeile 47 einen Eintrag gemacht.excel druckt 2 seiten aus-was richtig ist. (es waren aber auch schon 4)
lösche ich nun den Eintrag 47, und drucke über makro aus, druckt´s wieder 2 Seiten...
obwohl ja jetzt eigentlich nur die zeilen1 bis 6 gedruckt werden sollten.

find ich aber auch nichts,wo ich meine daran könnte es liegen..... das weiss nur der profi...
Nächstes "nice to have" : es soll überhaupt ab zelle /Zeile (b) 2 gedruckt werden. (das wusstest du vorher nicht; kommt erst durch das layout)
Im Moment druckt´s auf das erste Blatt die zeile 1 mit, auf blatt 2 dann aber erst ab zeile 2 (Blatt 2 ist ok).
Und noch eine Frage: wenn ich - für´s layout- links (also vor spalte B) noch ein paar spalten einfüge - damit das arbeitsblatt mehr in der Mitte
des Monitors ist, dann verändert sich ja der druckbereich von spalte B nach z.B. spalte F ; das heisst, ich muss im makro für alle B das F einsetzen. richtig?
Herzlichen dank für deine Mühe .
gruss dieter
Anzeige
AW: jetzt aber schon viel besser.....
29.01.2005 14:48:14
Ramses
Hallo
Das Problem liegt hierbei an
Cells.SpecialCells(xlCellTypeLastCell).Row
Das setzt EXCEL erst nach einem erneuten Speichern zurück.
Wenn du also irgendwo 47 einträgst und danach wieder löscht,... ist das für EXCEL immer noch die letzte benutzte Zelle. Erst nach einem speichern weiss EXCEL wieder wo wirklich die letzte zelle ist.
Umgehen kannst du das nur, indem du Spalte für Spalte auf den grössten (Zeile) letzten Eintrag prüfst und dann halt den Wert verwendest.
Wenn du den Ausdruck in der Mitte haben willst, musst du nicht mit Spalten experimentieren, sondern EXCEL im Dialog "Seite einrichten" einfach sagen, dass er den Ausdruck horizontal mittig platzieren soll.
Gruss Rainer
AW: jetzt aber schon viel besser.....
29.01.2005 15:50:37
dieter-j
>Wenn du den Ausdruck in der Mitte haben willst, musst du nicht mit Spalten experimentieren, sondern EXCEL im Dialog "Seite einrichten" einfach sagen, dass er den Ausdruck horizontal mittig platzieren soll.
die platzierung des druckes ist schon OK; die darstellung des excelblattes auf dem Monitor
möchte ich "mittig haben. Und dazu dachte ich spalten einzufügen.
~f~Cells.SpecialCells(xlCellTypeLastCell).Row
Hat dies auch etwas ob ab zeile1 oder zeile2 gedruckt wird?
gruss dieter
AW: jetzt aber schon viel besser.....
29.01.2005 19:56:37
andre
Hallo Dieter,
kannst auch
letztezeile = Cells(Rows.Count, 1).End(xlUp).Row
nehmen. 2 Einschränkungen: wenn die Spalte bis ganz unten voll ist kommt hier 1 und auch wenn sie ganz leer ist.
Zu Deiner Frage: Der Anfang liegt hier; Cells(1, 2).Address ...

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige