Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1360to1364
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
Inhaltsverzeichnis

Individueller dynamischer Druckbereich

Individueller dynamischer Druckbereich
07.05.2014 17:14:55
moods
Hallo zusammen,
hab jetzt mal en neuen Thread aufgemacht da es eigentlich schon wieder um etwas anderes geht. Ich möchte den Druckbereich individuell festlegen. Dazu möchte ich das er mir das Datum der Combobox1 in der Spalte D findet und ab da 70 Zeilen nach unten druckt.
Er gibt den Fehler 91 Objektvariable oder withblock nicht festgelegt zurück.
Könnt ihr mir helfen wo der Fehler liegt?
Danke und Gruß
Private Sub CommandButton1_Click()
With Worksheets("Tabelle1")
.PageSetup.PrintTitleRows = .Range("A1:BH15")
.PageSetup.PrintArea = .Range(.Cells(.Columns(4).Find(what:=ComboBox1, lookat:=xlWhole).Row, 1), _
.Cells(1, .Columns.Count).End(xlToLeft).Offset(0, 3)).Resize(70).Address
End With
Application.Dialogs(xlDialogPrint).Show
End Sub

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

Betreff
Datum
Anwender
Anzeige
AW: Individueller dynamischer Druckbereich
07.05.2014 17:35:54
Daniel
Das Datum mit .FIND zu finden ist kompliziert, da .FIND die formatierten Werte vergleicht und man bei der Eingabe der Werte beachten muss, dass in VBA das englische Format eingegeben werden muss, obwohl man in einer deutschen Datei sucht.
Wesentlich einfacher und unproblematisicher ist, die Zeilennummer des Datums mit Worksheetfunction.Match zu ermitteln (entspricht "Vergleich" in Excel).
hierbei gibt man den LONG-Zahlenwert des Datums als Suchbegriff ein und findet die Zeilennummer mit:
Worksheetfunction.Match(CDbl(CDate(Combobox1.Text)), .Columns(4), 0)
Gruß Daniel

Anzeige
AW: Individueller dynamischer Druckbereich
07.05.2014 17:42:02
moods
Uff..
.PageSetup.PrintArea = .Range(.WorksheetFunction.Match(CDbl(CDate(ComboBox1.Value)), .Columns(4), 0), .Cells(1, .Columns.Count).End(xlToLeft).Offset(0, 3)).Resize(70).Address
sieht das dann so aus?
so sagt er, er unterstütz die eigenschaft oder methode nicht!
Gruß

AW: Individueller dynamischer Druckbereich
07.05.2014 17:51:58
moods
okay also so läuft es mal aber der Druckbereich stimmt nicht
Private Sub CommandButton1_Click()
With Worksheets("Tabelle1")
.PageSetup.PrintTitleRows = "$1:$15"
.PageSetup.PrintArea = .Range(Cells(WorksheetFunction.Match(CDbl(CDate(ComboBox1.Text)), . _
Columns(4), 0)), .Cells(1, .Columns.Count).End(xlToLeft).Offset(0, 3)).Resize(70).Address
End With
Unload Me
Application.Dialogs(xlDialogPrint).Show
End Sub

Anzeige
AW: "stimmt nicht"...
07.05.2014 20:20:45
Daniel
... ist als Fehlerbeschreibung leider nicht ausreichend, um daraus eine Korrektur abzuleiten.
Gruß Daniel

AW: "stimmt nicht"...
07.05.2014 20:39:24
moods
Hey Daniel,
in der Druckvorschau bekomm ich jetzt 5 Seiten, bei der ersten seite sehe ich die Zeilen die eigentlich ausgeblendet werden sollen durch .Cells(1, .Columns.Count).End(xlToLeft).Offset(0, 3)).Resize(70).Address
und auf allen anderen seite sehe ich nur links die ersten 12 Spalten. Eigentlich hätte ich ja gern nur eine Seite.
Muss ich da irgendwo noch ein Dim "irgendwas" as Long machen?

AW: "stimmt nicht"...
07.05.2014 20:58:03
Daniel
Denk doch mal scharf nach,
Cells(1, .Columns.Count).End(xlToLeft).Offset(0, 3)
Ist doch die letzte Zelle in der ersten Zeile!
Und damit spannt du dann deinen Druckbereich zwischen der ersten und der gefundenen Zeile auf und nicht von der gefundenen Zeile nach unten.
Hier solltest du also doch wieder mit CountA die Anzahl der benötigten Spalten ermitteln und mit Resize arbeiten, eventuell vorhandene Leerzelle musst du halt durch hinzuaddieren ergänzen.
Die Lösung hatten wir aber schon mal!
Probiere es mal so, den Additonswert 4 musst du ggf noch anpassen
.printarea = .cells(worksheetfunction.match(...), 1).resize(70, worksheetfunction.counta(.rows(1)) + 4).address
Gruß Daniel

Anzeige
AW: "stimmt nicht"...
07.05.2014 21:10:35
moods
mhh komisch jetzt markiert er match und sagt Argument ist nicht optional
.PrintArea = .Cells(WorksheetFunction.Match(CDbl(CDate(ComboBox1.Text))), 1).Resize(70, WorksheetFunction.CountA(.Rows(1)) + 4).Address

AW: "stimmt nicht"...
07.05.2014 21:27:01
Daniel
In deiner Match-Funktion fehlt auch der zweite Parameter, die SuchSpalte.
Sollte dir eigentlich auffallen, wenn du den Code mit breites vorhandenen, fehlerfrei laufenden Codes vergleichst.
Gruß Daniel

AW: "stimmt nicht"...
07.05.2014 21:37:21
moods
ja den gedanke hatte ich auch kurz nach meiner letzten nachricht...
jedenfalls Dank ich dir vielmals!!! es läuft!
Gruß

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige