Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
536to540
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
536to540
536to540
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Ausdruck mittels VBA steuern

Ausdruck mittels VBA steuern
27.12.2004 10:05:29
Fritz
Schönen Tag liebe VBA-Spezialisten,
ich brauche wieder einmal eure fachkundige Hilfe.
In einer Tabelle möchte ich den Druckbereich (welche Zeilen und Spalten in einem Bereich gedruckt werden) in Abhängigkeit von verschiedenen Kriterien steuern.
Ich denke, dass das am besten mittels VBA möglich ist und hoffe, dass ihr mir bei der Umsetzung helfen könnt.
(Grundsätzlich) soll der Bereich B1:R69 gedruckt werden.
Allerdings sollten folgende Einschränkungen Berücksichtigung finden:
Es sollen diejenigen Zeilen nicht gedruckt werden, in denen im Bereich C5:R69 überhaupt kein Eintrag zu finden ist, ausgenommen davon sollte immer die erste leere Zeile sein (d.h. wenn in der Zeile darüber in den Spalten C bis R noch ein Eintrag steht, sollte auch eine „leere Zeile“ noch mitgedruckt werden.
Ebenfalls sollte im Bereich C5:R69 diejenigen Spalten nicht gedruckt werden, die in diesem Bereich keinen Eintrag enthalten.
Bereits jetzt allen hilfsbereiten Forumsbesuchern besten Dank!
Gruß
Fritz

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Ausdruck mittels VBA steuern
28.12.2004 10:25:25
Christoph
Hallo Fritz,
als Ansatz der folgende Code
Gruß
Christoph

Option Explicit
Sub Drucken()
Dim wksTmp As Worksheet
Dim i%, v%, h%
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Set wksTmp = Sheets.Add(After:=Sheets(Sheets.Count))
v = 69
h = 18
With wksTmp
Sheets("Tabelle1").Cells.Copy
.Cells(1, 1).PasteSpecial Paste:=xlPasteFormats
.Cells(1, 1).PasteSpecial Paste:=xlPasteValues
For i = v To 6 Step -1
If Application.CountA(.Range(.Cells(i, 3), .Cells(i - 1, h))) = 0 Then
.Rows(i).Delete
v = v - 1
End If
Next i
For i = h To 3 Step -1
If Application.CountA(.Range(.Cells(5, i), .Cells(v, i))) = 0 Then
.Columns(i).Delete
h = h - 1
End If
Next i
.PageSetup.PrintArea = .Range(.Cells(1, 2), .Cells(v, h)).Address
'.PrintOut    'zum Testen auskommentiert
'.Delete      'zum Testen auskommentiert
End With
Sheets("Tabelle1").Select
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub

Anzeige
AW: Ausdruck mittels VBA steuern
Fritz
Hallo Christoph,
habe eben erst deine Hilfe registriert und das Makro gleich getestet. Funktioniert nicht, wohl weil aufgrund von Spaltenüberschriften (in Zeile 4) und Spaltenüberschriften (Spalte B) einige Zellen verbunden sind. Kommt jedenfalls eine diesbezügliche Meldung (Laufzeitfehler '1004').
Inzwischen hat mir Werner auch noch eine Lösung geschrieben, hab ich noch nicht getestet.
Ich werde hier auf jeden Fall auch an Werner eine Rückmeldung geben. Warte vielleicht mal solange, bevor Du Dir unnötige Arbeit machst, es sei denn, die Änderung ist aufgrund meines Hinweises für Dich mit wenig Arbeit verbunden.
Auf jeden Fall vielen Dank für Deine Arbeit und Unterstützung.
Gruß
Fritz
Anzeige
AW: Ausdruck mittels VBA steuern
28.12.2004 23:44:50
Christoph
Hallo Fritz,
dann probiers mal so
du musst evt. noch die Seiten-umbrüche anpassen
noch ein Tipp: verwende als Button besser jene aus der Symbolleiste "Steuerelement-Toolbox" statt aus "Formular"
Gruß
Christoph

Option Explicit
Sub Drucken()
Dim wksTmp As Worksheet
Dim i%, v%, h%
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Set wksTmp = Sheets.Add
v = 69
h = 18
With wksTmp
Sheets("Mannschaftsmeldungen").Cells.Copy .Cells(1, 1)
For i = v To 6 Step -1
If Application.CountBlank( _
.Range(.Cells(i, 3), .Cells(i - 1, h))) = 2 * (h - 2) Then
.Rows(i).Delete
v = v - 1
End If
Next i
For i = h To 3 Step -1
If Application.CountBlank(.Range(.Cells(5, i), .Cells(v, i))) = v - 4 Then
.Columns(i).Delete
h = h - 1
End If
Next i
.PageSetup.PrintArea = .Range(.Cells(1, 2), .Cells(v, h)).Address
.PrintOut
.Delete
End With
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub

Anzeige
AW: Ausdruck mittels VBA steuern
Fritz
Hallo Christoph,
Super! Jetzt klappts.
Für Laien immer wieder faszinierend, was ihr Spezialisten alles hinkriegt. Vielen Dank!
Dir und natürlich auch allen anderen, die mir in diesem Jahr geholfen waren (das waren einige) wünsche ich ein gesundes und erfolgreiches Neues Jahr!
Gruß
Fritz
Danke für die Rückmeldung (o.T.)
29.12.2004 15:10:19
Christoph
AW: Ausdruck mittels VBA steuern
WernerB.
Hallo Fritz,
mit diesem Makro werden die unerwünschten Zeilen und Spalten ausgeblendet und damit auch nicht gedruckt.
Nach dem Drucken kannst Du diese ja wieder einblenden; dazu kannst Du auch den ersten Teil (bis vor der ersten For-Next-Schleife) dieses Makros verwenden.

Sub Fritz()
Dim b As Byte, z As Byte
Application.ScreenUpdating = False
ActiveSheet.PageSetup.PrintArea = "$B$1:$R$69"
Columns("B:R").EntireColumn.Hidden = False
Rows("5:69").EntireRow.Hidden = False
For b = 5 To 69
If WorksheetFunction.CountA(Range(Cells(b, 3), Cells(b, 18))) = 0 Then
If z > 0 Then
Rows(b).EntireRow.Hidden = True
End If
z = z + 1
End If
Next b
For b = 3 To 18
If WorksheetFunction.CountA(Range(Cells(5, b), Cells(69, b))) = 0 Then
Columns(b).EntireColumn.Hidden = True
End If
Next b
Application.ScreenUpdating = True
End Sub

Viel Erfolg wünscht
WernerB.
P.S.: Dieses Forum lebt auch von den Rückmeldungen der Fragesteller an die Antworter !
Anzeige
AW: Ausdruck mittels VBA steuern
Fritz
Hallo Werner,
prima, dass Du mir Hilfe anbietest.
Ich habe eben das Makro getestet mit folgenden Erkenntnissen.
Das Ausblenden der Zeilen funktioniert weitgehend, das der Spalten jedoch nicht. Es wird auch nicht gedruckt. Es erfolgt im Gegensatz zu dem Makro von Christoph aber keine Fehlermeldung. Möglicherweise hat das damit zu tun, dass ich in Zeile 4 und der Spalte B Zellen verbunden habe.
Damit ihr die Ursachen möglicherweise besser ermitteln könnt, lad ich die Tabelle mal hoch.
Sie dient der Erfassung von Mannschaftsmeldungen (Fußballturnier), bei dem eben zwischen 4 und 6 Mannschaften ihre Teilnehmer melden und die Namen der Spieler unter Angabe ihres Alters erfasst werden.
Vielen Dank für Deine Hilfe!
Gruß
Fritz
https://www.herber.de/bbs/user/15385.xls
Anzeige
AW: Ausdruck mittels VBA steuern
WernerB.
Hallo Fritz,
verbundene Zellen und Makros vertragen sich selten.
Ich habe – ehrlich gesagt – keine Lust, mich damit auseinanderzusetzen, wie man die verbundenen Zellen mit einem von Dir gewünschten Makro in Einklang bringen kann.
Vielleicht klappt es ja mit dem neuen Vorschlag von Christoph; ich habe mich damit jedoch nicht befasst.
Vorsichtshalber habe den Thread wieder auf "offen" gestellt.
Viel Erfolg und einen guten Rutsch wünscht
WernerB.
AW: Ausdruck mittels VBA steuern
Fritz
Hallo Werner,
als VBA-Unkundiger kann man (meistens) nicht einschätzen, wie groß die mit der Aufgabe verbundenen Schwierigkeiten sind.
Ich danke Dir für Deine Unterstützung.
Gruß
Fritz
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige