Live-Forum - Die aktuellen Beiträge
Datum
Titel
29.03.2024 13:14:12
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1680to1684
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

Übernimmt zugewiesenen Range falsch

Übernimmt zugewiesenen Range falsch
08.03.2019 11:30:14
Ronald
Hallo an alle
Ich möchte gerne einen gewissen Bereich meines Excels als PDF drucken. Dazu
weise ich einen gewissen Bereich zu, lasse ihn markieren und drucke ihn als PDF.
Das Drucken an sich funktioniert. Es wird auch der markierte Bereich gedruckt.
Jedoch ist der markierte Bereich nicht der per Code hätte sollen markiert werden.
Public Sub print_pdf()
Dim strPath As String
strPath = ThisWorkbook.Path
MsgBox strRangeLinksBuchstabe
'liefert AU
MsgBox strRangeRechtsBuchstabe
'liefert EV
Worksheets("Personenplanung").Range(strRangeLinksBuchstabe & "2" & ":" &  _
strRangeRechtsBuchstabe & "42").Select
'markiert jedoch C2:FU42.
Selection.ExportAsFixedFormat Type:=xlTypePDF, Filename:=strPath & "\Service  _
Jahresplaner 2019" & "_freigegeben_" & Date & ".pdf", Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False
End Sub
Ich hoffe, jemand hat eine Idee. Denn ich bin mit meinem Latein am Ende. Für mich
ist es nur noch unlogisch.
Gruß Ronald

28
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Übernimmt zugewiesenen Range falsch
08.03.2019 13:19:31
onur
Poste msal die Datei.
AW: Übernimmt zugewiesenen Range falsch
08.03.2019 14:49:46
Ronald
Hier ist die Datei:
https://www.herber.de/bbs/user/128220.xlsm
Wenn man auf den Button drückt, kommen zwei Messageboxen als Kontrolle, welche Werte als Range
genommen werden muß. Und dann sollte es einen gewissen Bereich markieren, aber es markiert einen
anderen. Dieser wird dann als PDF gedruckt...also der falsche.
Gruß Ronald
AW: Übernimmt zugewiesenen Range falsch
08.03.2019 16:26:11
onur
Diese Datei kommt gar nicht mal zum Drucken, da der Code schon vorher aussteigt, und zwar bei
Public Sub AktiverRange()
'strHeutigesDatumSpalte beinhaltet die Spaltennummer des heutigen Tages
'Exit Sub
strRangeLinks = CStr(CInt(strHeutigesDatumSpalte) - 5)

Schon mal was von Variablendeklaration gehört?
Anzeige
AW: Übernimmt zugewiesenen Range falsch
08.03.2019 16:33:45
Ronald
Die Variable ist in Modul3 als Public deklariert. Bei mir druckt es, wie ich bereits geschrieben habe.
AW: Übernimmt zugewiesenen Range falsch
08.03.2019 16:37:35
onur
"Bei mir druckt es, wie ich bereits geschrieben habe" - Exakt diese Datei, die du gepostet hast, so wie sie da steht? Oder muss man vorher da irgendwo etwas eintragen?
Wo z.B. stehen denn die "Buchstaben"?
AW: Übernimmt zugewiesenen Range falsch
08.03.2019 16:48:28
Ronald
Siehst Du die rote Linie?
Das ist ja eine Art Kalender, bei der es immer den aktuellen Tag mit der roten Linie markiert und
bei Programmstart diese Linie sucht und löscht, um dann passend zum aktuellen Datum diese Linie neu
zu setzen.
Zeile 47 ist eine Hilfszeile, in welcher ab Spale AV das jeweilige Datum in weißer Schrift eingetragen
ist. Da man nicht nach Datum suchen kann, ist in der obersten Zeile, ab derselben Spalte die
Konvertierung in Text drin, da es nicht anders machbar ist. Erst dannn ist es möglich, dieses Datum
zu finden (Suchbegriff aktuelles Datum). Dort wird herausgefiltert, welche Spaltennummer das ist.
Da mir die Spaltennummer bei Ranges etc nichts nützt, habe ich in Modul3 eine Funktion, die daraus
wieder Buchstaben macht. Mit der Spaltennummer des jeweils aktuellen Datums wird der Druck-Range
bestimmt. 5 Zellen zurück und 100 Zellen vor. Daraus ergibt sich jeweils auch wieder eine Spalten-
nummer, aus der wieder ein Buchstabe generiert wird. Mit derselben Funktion.
strRangeLinks (als Zahl) ist entsprechend 5 Zellen zurück der Beginn des Range und
strRangeLinksBuchstabe der bereits generierte Buchstabe. Und mit Rechts dasselbe, nur die 100 zellen
vor.
Diese werden dann vor dem Druckbefehl dem Range zugewiesen. Aber wie der Kommentat hinter der
Rangezuweisung besagt, funktioniert es auch nicht, wenn ich nur sage:
Worksheets("Personenplanung").Range("A2:V7).Select 'Ist ein rein fiktiver Range zum Testen.
Es markiert zwar Zellen, aber nicht die angegebenen.
Die Exceldatei sollte einfach so funktionieren. Auch bei Dir. Die Funktion habe ich ja hier weiter
oben beschrieben, damit es zum Nachvollziehen einfacher ist.
Anzeige
AW: Übernimmt zugewiesenen Range falsch
08.03.2019 17:12:08
onur
Sorry, aber dein Code ist so laienhaft und überkompliziert aufgebaut, daß ich schon beim analysieren und verstehen Kopfschmerzen bekomme - vom Debuggen mal ganz abgesehen. Eine Sub, die nur zum Setzen einer Variablen dient, ruft eine Andere auf, und die wiederum eine Andere usw usw .
Hättest du mal die Wochenenden drin gelassen, wäre das Ganze ein Kinderspiel gewesen. So musst du ein Riesenkonstrukt aufbauen, nur um rauszufinden, wo (welches Datum) wir uns in der Tabelle befinden.
Dann noch ein Riesenkonstrunkt, nur um einen Bereich zu selektieren. Noch nie was davon gehört, dass man nicht die Spaltenbuchstaben braucht, um einen Range zu benennen - Das es auch wesentlich einfacher (als bei Dir) mit der SPALTENNUMMER geht?
Anzeige
AW: Übernimmt zugewiesenen Range falsch
08.03.2019 17:17:03
Ronald
In allem gebe ich Dir recht. Dennoch ist es nicht meine Tabelle und nicht meine Idee, die WOchenenden
herauszunehmen. Ich habe mich nur angeboten, da zu helfen und Code zu implementieren.
Wenn ich es einfacher und effizienter könnte, würde ich nicht bei einem Forum anfragen.
Zwei Fragen:
- Wie kann ich alternativ den Range ohne Spaltenbuchstaben setzen?
- Wieso nimmt es in meinem Beispiel auch einen Standardrange nicht an (A2:V7).
Wenigstens diesen Range sollte es doch markieren können, statt etwas anderes.
AW: Übernimmt zugewiesenen Range falsch
08.03.2019 17:25:04
onur
1) z.B. so:
Set rng= Range(Cells(1,1),Cells(100,5)) 

statt
Set rng= Range("A1:E100")

2) Da, wie gesagt, der Code bei mir nicht läuft und ich keine Lust habe, jede Einzelne deiner Variablen und Subs zu überprüfen, kann ich dir nur eins anbieten:
Füge die Wochenenden ein und ich schreibe dir den Code zum bestimmen des Druckbereiches neu, das geht wesentlich schneller, als deinen Code zu analysieren.
Anzeige
AW: Übernimmt zugewiesenen Range falsch
08.03.2019 17:28:39
Ronald
Danke für das Range-Beispiel.
Ändert sich an den Spaltennummern etwas, wenn ich Wochenenden einfüge und diese dann
per Rechtsklick "ausblenden" ausblende? Die sollen einfach nicht sichtbar sein, sonst
sieht man einen Haufen sinnloser Spalten, die man gar nicht braucht. Zumindest für eine
Mitarbeiterauslastung nicht.
AW: Übernimmt zugewiesenen Range falsch
08.03.2019 17:33:34
onur
Ausgeblendet ist kein Problem.
Wenn alle Tage drin sind, braucht man nur in Zeile 1 oder 5 das Anfangsdatum zu setzen und in die Nachbarzellen die Formel (z.B.)
=C5+1
zu schreiben und man hat pro Tag eine Spalte mit dem genauen Datum und es ist ein Klax, das aktuelle Datum zu finden.
Anzeige
AW: Übernimmt zugewiesenen Range falsch
08.03.2019 17:46:59
Ronald
Unabhängig von nachträglich reingefummelten Wochenenden setzt es den Range nicht !!
Dim rngDruck As Range
Set rngDruck = Worksheets("Personenplanung").Range(Cells(2, 47), Cells(43, 152))
rngDruck.Select
Das ist derselbe Range, den ich vorher per Buchstabe setzen wollte. Und zwar AU2 bis EV43.
Mit Buchstaben hats den Range falsch gesetzt und mit Zahlen nun auch. Und zwar gleich falsch.
Dabei ist an dem Code oben alles richtig.Siehe rngDruck.Selec.
Ich finde da keinen Fehler.
AW: Übernimmt zugewiesenen Range falsch
08.03.2019 17:47:53
onur
Poste mal die neue Datei.
AW: Übernimmt zugewiesenen Range falsch
08.03.2019 17:53:42
Ronald
Jetzt sollte man nur die Datei starten und dann auf den Button oben links klicken können und es sollte
den falschen Bereich markieren. Beginnend bei C2...
AW: Übernimmt zugewiesenen Range falsch
08.03.2019 17:58:32
onur
Die Wochenenden sind doch immer noch nicht drin.
AW: Übernimmt zugewiesenen Range falsch
08.03.2019 18:01:55
Ronald
Ja logisch. Die haben doch mit dem Range kein bißchen zu tun. Außerdem dauert das eine Weile, die
Wochenenden reinzufummeln und auszublenden und den Code anzupassen. Muß ich noch machen.
Trotzdem hat der Range mit den Wochenenden nichts zu tun.
Jetzt habe ich sogar das Drucken rausgenommen, sodaß es nur noch so aussieht:
Public Sub print_pdf()
Dim rngDruck As Range
With Worksheets("Personenplanung")
Set rngDruck = .Range(.Cells(2, 47), .Cells(43, 152))
End With
rngDruck.Select
End Sub
Und dennoch markiert es ab C2...
Anzeige
AW: Übernimmt zugewiesenen Range falsch
08.03.2019 18:14:55
onur
DAS wiederum liegt daran, dass die Zellen in Spalte B VERBUNDEN sind - man kann nicht beim Selektieren verb. Zellen auseinander reissen.
AW: Übernimmt zugewiesenen Range falsch
08.03.2019 18:15:40
onur
Meine natürlich Zeile 2.
AW: Übernimmt zugewiesenen Range falsch
08.03.2019 17:55:46
onur
Wenn du ein ANDERES als das aktuelle Blatt ansprichst, musst du
Worksheets("Personenplanung").
vor jedes Range UND Cells setzen:
Set rngDruck = Worksheets("Personenplanung").Range(Worksheets("Personenplanung").Cells(2, 47), Worksheets("Personenplanung").Cells(43, 152))

oder
With Worksheets("Personenplanung")
Set rngDruck = .Range(.Cells(2, 47), .Cells(43, 152))
End With

Anzeige
Bei diesen Zellverbünden, kannst du das knicken,
10.03.2019 08:43:51
EtoPHG
Roland,
Eigentlich setze ich unter VBA gut voraus, dass wenigstens Basiswissen bezgl. der Behandlung verbundener Zellen mit VBA Code vorhanden ist. Du kannst ab Spalte C keinen einzeigen, sinnvollen und zu druckenden, rechteckigen Bereich (definiert durch Zelle links oben und Zelle rechts unten) auswählen, ohne dass er durch die übermässig verwendeten Zellverbünde 'zerrissen' wird. D.h. dass sich auch VBA weigern wird einen solchen zu setzen. Im Übrigen: In VBA ist die .Select Methode so ziemlich das Überflüssigste und Kontroproduktivste, was es gibt. Viel Vergnügen beim Aufräumen von Zellformatierungen und Code-Konstrukten!
Gruess Hansueli
Anzeige
AW: Bei diesen Zellverbünden, kannst du das knicken,
10.03.2019 09:25:43
onur
Entgegen des ersten Posts "Ich möchte gerne einen gewissen Bereich meines Excels als PDF drucken" ist es ja angeblich nicht sein "Excel", er ist ja (weil Excel-gut und VBA-gut) nur als Experte eingesprungen, um das Problem zu lösen.
AW: Bei diesen Zellverbünden, kannst du das knicken,
10.03.2019 14:24:16
Ronald
Die Posts eines gewissen Onur kommen recht großkotzig rüber. Nur weil ich nicht die ganze Vorgeschichte der Exceldatei aufliste, und ich der Einfachheit halber "mein" Excel schreibe, muß es noch lange nicht
meins sein.
Also muß man nicht jemanden, der sich in einem Forum Hilfe sucht, verbal anpissen, weil er nicht
alles wissen oder je nach Situation nicht an alles denken kann. Das machen nur geistig Schwache.
Als Experte habe ich mich nicht hingestellt. Und diese Abstufung, die hier zur Selbstdarstellung der
eigenen Fähigkeiten zur Auswahl steht, habe ich nicht implementiert. Als "bescheiden" würde ich meine
Kenntnisse nicht bezeichnen. Und das nächsthöhere ist nunmal nur "gut".
### Thread beendet ###
AW: Bei diesen Zellverbünden, kannst du das knicken,
10.03.2019 14:36:30
onur
"großkotzig" ist eher Jemand, der sich als "VBA-gut" bewertet, obwohl er nicht mal weiß, dass man Zellen auch ohne Spaltenbuchstaben ansprechen kann - oder als "Excel-gut", ohne zu wissen, was es mit verbundenen Zellen auf sich hat.
Es gibt bestimmt auch Leute, die behaupten würden, daß selbst die Bewertung "bescheiden" in deinem Falle leicht übertrieben wäre, aber solange du in deinem Umfeld als Experte giltst, den man um Rat fragen kann....
### Thread beendet ###
AW: Bei diesen Zellverbünden, kannst du das knicken,
14.03.2019 12:33:26
Ronald
Getroffene Hunde bellen...
AW: Bei diesen Zellverbünden, kannst du das knicken,
14.03.2019 12:44:00
onur
Das letzte Wort müssen solche Leute auch noch haben.
Aber am grosskotzigsten ist es ja, grosszügig Hilfe anzubieten, und sich dann ans Forum zu wenden, weil man eigentlich null Ahnung hat. Aber das wirst du demjenigen, dem du Hilfe angeboten hast bestimmt nicht mitteilen.
AW: Bei diesen Zellverbünden, kannst du das knicken,
14.03.2019 12:44:50
Ronald
Geh sterben!
AW: Bei diesen Zellverbünden, kannst du das knicken,
10.03.2019 14:23:02
Ronald
Ich heiße nicht Roland. Und ich arbeite im Service Support im Maschinenbau. Da gibts Menschen auf der ganzen Welt, die seit Jahrzehnten an den Maschinen arbeiten und sich auskennen sollten. Ich habe da gelernt, daß man NICHTS erwarten und voraussetzen kann oder darf...
Ich bin mit VBA nicht perfekt. Kann es auch nicht, wenn ich mich nur ab und zu nebenbei damit
beschäftige. Ich habe aber auch nicht den Anspruch, perfekt zu sein. Wenn ich eine Funktion
wunschgemäß aufgebaut habe, hinterfrage ich sie nicht, ob sie denn performant genug ist oder ich es
kürzer und besser hätte codieren können.
Du hast aber recht. An diesem Code kann ich noch etwas optimieren, was ich auch tun werde.
Auch die Zellzusammenschlüsse.
Die Selektion-Methode habe ich von anderen übernommen. Ich kenne derzeit keine andere Methode,
um den Range eines PDF zu drucken. Aber ich werde mal danach suchen. Danke für Deine Tips und
konstruktive Kritik.
Gruß Ronald

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige