Microsoft Excel

Herbers Excel/VBA-Archiv

Makro für Drucken

Betrifft: Makro für Drucken von: Walter
Geschrieben am: 09.08.2008 13:00:26

Liebe Excelfreunde,

Trotz vieler Versuche bekomme ich es nicht hin.
Ich möcht nach anklicken des Button "DRUCKEN" die Ladeliste bis zum letzten Eintrag drucken.
Nach anklicken de Button "LÖSCHEN" sollen alle Eingabe aus der Eingabeliste gelöscht werden.
Bitte um Euere H I L F E !!!!

https://www.herber.de/bbs/user/54468.xls

Heißen Dank
Gruß Walter

  

Betrifft: Drucken und Löschen von: backowe
Geschrieben am: 09.08.2008 15:20:47

Hi Walter,

das Schlimmste was es nach meiner Meinung in Excel gibt sind verbundene Zellen. ;)

VBA-Code:
Sub Drucken()
With ActiveSheet
  .PageSetup.PrintArea = "$A$1:" & .Cells(Rows.Count, "E").End(xlUp).Row
  .PrintOut
  .PageSetup.PrintArea = ""
End With
End Sub

Sub Löschen()
Dim Zelle As Range
With ActiveSheet
  For Each Zelle In .Range("D2:D" & .Cells(Rows.Count, "D").End(xlUp).Row)
    If Zelle.Row Mod 2 = 0 And Zelle.MergeCells = True Then
      Zelle.MergeCells = False
      Zelle = ""
      Range(Cells(Zelle.Row, "D"), Cells(Zelle.Row + 1, "D")).Merge
    End If
  Next
  For Each Zelle In .Range("E2:E" & .Cells(Rows.Count, "E").End(xlUp).Row)
    If Zelle.Row Mod 2 = 0 And Zelle.MergeCells = True Then
      Zelle.MergeCells = False
      Zelle = ""
      Range(Cells(Zelle.Row, "E"), Cells(Zelle.Row + 1, "E")).Merge
    End If
  Next
  .Range("F2:F" & .Cells(Rows.Count, "F").End(xlUp).Row).ClearContents
  .Range("H2:H" & .Cells(Rows.Count, "H").End(xlUp).Row).ClearContents
  .Range("J2:J" & .Cells(Rows.Count, "J").End(xlUp).Row).ClearContents
  .Range("L2:L" & .Cells(Rows.Count, "L").End(xlUp).Row).ClearContents
End With
End Sub
Code eingefügt mit Syntaxhighlighter 4.15


Gruss Jürgen


  

Betrifft: Anpassung von: backowe
Geschrieben am: 09.08.2008 15:53:56

Hi Walter,

VBA-Code:
Sub Drucken()
With ActiveSheet
  .PageSetup.PrintArea = "A1:R" & .Cells(Rows.Count, "E").End(xlUp).Row + 1
'  .PrintOut
  .PageSetup.PrintArea = ""
End With
End Sub

Sub Löschen()
Dim Zelle As Range
With ActiveSheet
  For Each Zelle In .Range("D2:D" & .Cells(Rows.Count, "D").End(xlUp).Row)
    If Zelle.Row Mod 2 = 0 And Zelle.MergeCells = True Then
      Zelle.MergeCells = False
      Zelle = ""
      Range(Cells(Zelle.Row, "D"), Cells(Zelle.Row + 1, "D")).Merge
    End If
  Next
  For Each Zelle In .Range("E2:E" & .Cells(Rows.Count, "E").End(xlUp).Row)
    If Zelle.Row Mod 2 = 0 And Zelle.MergeCells = True Then
      Zelle.MergeCells = False
      Zelle = ""
      Range(Cells(Zelle.Row, "E"), Cells(Zelle.Row + 1, "E")).Merge
    End If
  Next
  .Range("F2:F" & .Cells(Rows.Count, "F").End(xlUp).Row).ClearContents
  .Range("H2:H" & .Cells(Rows.Count, "H").End(xlUp).Row).ClearContents
  .Range("J2:J" & .Cells(Rows.Count, "J").End(xlUp).Row).ClearContents
  .Range("L2:L" & .Cells(Rows.Count, "L").End(xlUp).Row).ClearContents
End With
End Sub

Code eingefügt mit Syntaxhighlighter 4.15


Gruss Jürgen


  

Betrifft: AW: Anpassung von: Daniel
Geschrieben am: 09.08.2008 16:13:56

Hi

das sind jetzt immer noch 14 Seiten ausdruck statt einer.
kleiner Tip: zum Testen von Druckmakros ohne Papierverschwendung das .PrintOut nicht auskommentieren, sondern, mit .PrintOut Preview:=True die Druckvorschau aktivieren.
dann sieht man auch gleich, obs funktioniert.

mal ne Frage, wozu soviel Aufwand zum löschen von verbundenen Zellen?
einfach D3 auf D2 ändern und das Löschen funktioniert.
verbundenen Zellen sind nicht so schlimm, wie man glaubt, man muss nur wissen, wie man damit umgeht.

Gruß, Daniel


  

Betrifft: Meine Eltern haben mir in den sechziger- und ... von: backowe
Geschrieben am: 09.08.2008 17:06:41

Hallo Daniel,

... Anfang der siebziger Jahre beigebracht, wenn man Unordnung verursacht, soll man auch gefälligst aufräumen! ;o)

Gruss Jürgen


  

Betrifft: AW: Makro für Drucken von: Daniel
Geschrieben am: 09.08.2008 15:22:06

Hi
wo ist jetzt dein Problem? kannst du keine Buttons anlegen?

das geht doch einfach so:
füge eine normales Grafik-Textfeld oder aus der Symbolleiste "Formular" eine Schaltfläche ein.
dann klickst du mit der Rechten Maustaste drauf und wählst im Kontextmenü "Marko zuweisen..."
dann kommt eine Auswahlliste der bestehenden Makros und du kannst dir aussuchen, welches du über die Schaltfläche starten willst.

dein Druckmakro sollte so aussehen, um nur den notwendigen Bereich zu drucken:

Sub Drucken()
 Dim Zeile As Long
 Zeile = Sheets("Ladeliste").Columns(3).Find(what:=Sheets("Eingabe").Cells(Rows.Count, 5).End( _
xlUp).Text,  lookat:=xlWhole, LookIn:=xlValues).Row + 1
    Sheets("Ladeliste").PageSetup.PrintArea = "$A$1:$H$" & Zeile
    Sheets("Ladeliste").PrintOut preview:=True
End Sub



dein Lösch-Makro geht nicht, weil du verschuchst, Zeile 3 zu löschnen, die Zeile 3 ist aber Teilweise mit Zeile 2 verbunden, dh. du hast verbundene Zellen nur Teilweise selektiert, dann kann man die nicht löschen.
probiers mal so:
Range("D2", Cells(Rows.Count, 8)).ClearContents

Gruß, Daniel


  

Betrifft: AW: Makro für Drucken Nachtrag von: Daniel
Geschrieben am: 09.08.2008 15:36:51

Hi
hab noch vergessen, vom Testen die Vorschauoption beim Drucken rauszunehmen.
wenn dich die stört, einfach den Textteil "preview:=True" löschen.

außerdem solltest du beim Lösch-Makro die Spalten vielleicht von 8 auf 13 ändern, um alles zu löschen

Gruß, Daniel


  

Betrifft: AW: @ Daniel von: hary
Geschrieben am: 09.08.2008 15:51:05

Hallo Daniel
Bin noch am lernen. Hatte das loeschen es so geloest:


Range("D2:L229").ClearContents


Ausser das dein Loesch-Makro ab der letzten besetzten Zelle loescht, besteht noch ein anderer gravierender Unterschied?
Gruss Hary


  

Betrifft: Im Bereich sind verbundene Zellen und Formeln! oT von: backowe
Geschrieben am: 09.08.2008 15:57:52




  

Betrifft: AW: @ Daniel von: Daniel
Geschrieben am: 09.08.2008 16:03:41

Hi
ist nicht mein Löschmakro, sondern das von Walter.
habs nur korrigiert, damit es nicht über die Verbundenen Zellen stolpert.

prinzipiell ist kein Unterschied, Walter löscht halt alle Zeilen zwischen der 2. und der Letzten Excelzeile und spart sich damit an dieser Stelle den änderungsaufand, falls es doch mal mehr als 230 Zeilen sind (und muss durch Rows.Count auch bei einem Wechsel auf eine Andere Excelversion nicht eingreifen)

das einzige, was micht gewundert hat, ist , daß der Editor seine Syntax im Range-Befehl so akzeptiert.
aber es funktioniert ja, von daher: wieder was gelernt ;-).

Gruß, Daniel


  

Betrifft: AW: danke Daniel,backowe owT von: hary
Geschrieben am: 09.08.2008 16:07:25

.


  

Betrifft: AW: danke von: Walter
Geschrieben am: 10.08.2008 08:28:20

Danke an Alle,
habe sehr sehr viel aus Eueren Hinweise gelernt ( z.B. Verbunden Zellen)

Habe alles zum Laufen gebracht
Heißen Dank
Schönen Sonntag
wünscht
Rentner Walter aus dem nördlichen Nordhessen


 

Beiträge aus den Excel-Beispielen zum Thema "Makro für Drucken"