makro um liste zu drucken

  • #1
H

hans jupp

Bekanntes Mitglied
Themenersteller
Dabei seit
20.06.2003
Beiträge
473
Reaktionspunkte
0
hallo,

ich habe in excel 2003 eine liste, die ich ausdrucken möchte.
in dem tabellenblatt sind die ersten 500 zeilen farblich formartiert. da aber oft nur 10 zeilen beschriftet werden, sollen auch nur diese zeilen ausgedruckt werden.
mein versuch sieht bisher so aus:

Sub liste_drucken()
Range(A1:E5).Select
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
Range(A6).Select
End Sub

zusätzlich müßte das makro also noch feststellen, bis zu welcher zeile in spalte a ein eintrag vorliegt und dann bis zu dieser zeile die spalten a bis e drucken.

vielen dank schonmal für eure hilfe :)

kath.hundefriseursalon
 
  • #2
Code:
Sub liste_drucken()
  Range(A1).Select
  Range(ActiveCell, ActiveCell.End(xlDown).Offset(0, 4)).Select
  Selection.PrintOut Copies:=1, Collate:=True
End Sub
Ich geh mal davon aus, daß immer Spalten A - E gedruckt werden sollen. Falls Spalten A - F gedruckt werden sollen, muß beim Offset 5 statt 4 stehen.
 
  • #3
hallo klexy,

das makro funktioniert genau so wie es soll!

ich hätte nur noch einen nachtrag:
das makro soll vor dem drucken in spalte a der nächsten freien zeile noch listenende einfügen ...

kath.hundefriseursalon
 
  • #4
Hallo kath.hundefriseursalon,

dann probier's mal damit.
Code:
Sub liste_drucken()
  With Cells(Rows.Count, 1).End(xlUp)
    If .Value <> listenende Then .Offset(1, 0).Value = listenende
  End With
  With Range(Cells(1, 1), Cells(Rows.Count, 1).End(xlUp).Offset(0, 4))
    .PrintOut Copies:=1, Collate:=True
  End With
End Sub
Gruß Matjes :)
 
  • #5
Oder nach Hausfrauenart:
Code:
Sub liste_drucken()
   ->Zelle A1 als Startpunkt nehmen
   ->von hier bis ans Ende nach unten gehen
   ->und von dort noch eins nach unten und 0 nach rechts
  Range(A1).End(xlDown).Offset(1, 0).Select
   ->Eintrag in der jetzt aktiven Zelle machen
  ActiveCell.FormulaR1C1 = listenende
   ->Zelle A1 markieren
  Range(A1).Select
   ->den Bereich markieren, der bei der Aktiven Zelle (A1) beginnt
   ->und bis zum unteren Ende und dann noch 0 nach unten und 4 nach rechts geht
  Range(ActiveCell, ActiveCell.End(xlDown).Offset(0, 4)).Select
   ->diese Markierung (=Selection) 1x drucken
   ->es werden die voreingestellten Druck- und Druckereinstellungen genommen
  Selection.PrintOut Copies:=1, Collate:=True
End Sub
;)
 
  • #6
hallo,

beide makros funktionieren genau so, wie ich mir das vorgestellt habe!

jetzt bleibt mir nur noch die qual der wahl ;)

euch beiden nochmal vielen dank für die hilfe :)

gruß,
kath.hundefriseursalon
 
  • #7
Hallo kath.hundefriseursalon,

es gibt einen Unterschied:
- klexy sucht von oben nach unten  ->Range(A1).End(xlDown)'
- matjes von ganz unten nach oben ->Cells(Rows.Count, 1).End(xlUp)'

Unterschied in der Funktion:
Wenn in der Spalte A zwischendurch mal ein leeres Feld steht, hält klexys Makro das für das Ende der Tabell und gibt nur die Zeile darüber aus.

Gruß Matjes :)
 
  • #8
hallo matjes,

unter dem gesichtspunkt habe ich das als laie noch gar nicht gesehen.

vielen dank für die aufklärung!

gruß,
kath.hundefriseursalon
 
  • #9
Und ich sach noch: mach nie eine leere Zeile mitten in eine Tabelle.
Ich werd das Konkurrenzprodukt mal in meine Überlegungen aufnehmen.
 
  • #10
hallo,

nachdem gestern der erste user eine leerzeile in der tabelle hatte und dementsprechend der untere teil der tabelle nicht ausgedruckt worden wäre, hat sich matjes lösung als sicherer erwiesen.

wobei ich klexys vorschlag (dank der guten erklärung der befehle) besser nachvollziehen konnte ;-)

gruß,
kath.hundefriseursalon
 
  • #11
Hallo zusammen,

dann versuch ich's auch mal mit mehr Kommentar:

Gruß Matjes ;)
Code:
Sub liste_drucken()
  
 -> Arbeite mit der Zelle des aktuellen Blattes, die du findest,
 -> wenn du in der Spalte A von der letztmöglich Zeile (65535)
 -> nach oben suchst, nach der ersten nicht leeren Zelle
  With Cells(Rows.Count, 1).End(xlUp)
   ->Wenn der Wert dieser Zell nicht->listenende' ist,
   ->dann schreibe in die Zelle eine Zeile tiefer->listenende'
    If .Value <> listenende Then .Offset(1, 0).Value = listenende
  End With
  
 ->Arbeite mit dem Bereich des aktuellen Blattes, der sich aus der
 -> Zelle A1 bis zu der Zelle ergibt, die du findest,
 -> wenn du in der Spalte A von der letztmöglich Zeile (65535)
 -> nach oben suchst, nach der ersten nicht leeren Zelle,
 ->und dann vier Spalten nach rechts gehst
  With Range(Cells(1, 1), Cells(Rows.Count, 1).End(xlUp).Offset(0, 4))
   ->drucke diesen Bereich aus, Anzahl der Ausdrucke =1
    .PrintOut Copies:=1, Collate:=True
  End With
End Sub
 
  • #12
hallo matjes,

das sollte keine anspielung o.ä. sein, die dich zu zusätzlicher arbeitet herausfordert ::)

trotzdem vielen dank für die ausführliche erklärung, der mir->neuen' befehle!

gruß,
kath.hundefriseursalon
 
Thema:

makro um liste zu drucken

ANGEBOTE & SPONSOREN

Statistik des Forums

Themen
113.840
Beiträge
707.963
Mitglieder
51.494
Neuestes Mitglied
Flensburg45
Oben