VBA Variable in Absolute Adresse umwandeln

Moderator: ModerationP

VBA Variable in Absolute Adresse umwandeln

Beitragvon ahapezet » 30. Jun 2022, 16:35

Hallo VBA Fans

ich benötige eure Hilfe. Um nicht immer umständlich den Druckbereich zu ändern habe ich mir mit dem Makroreckorder ein Makro erstellt und danach modifiziert damit der Druckbereich immer entsprechen der Listengröße angepasst wird. Siehe Code.
Code: Alles auswählen
Sub Druckbereich()
'
' Druckbereich Makro
'
Dim letztezeile As Integer
letztezeile = ActiveSheet.Cells(Rows.Count, 2).End(xlUp).Row
letztezeile = letztezeile + 5
   
    Range(Cells(6, 1), Cells(letztezeile, 8)).Select
    ActiveSheet.PageSetup.PrintArea = "$A$6:$H$21"
    Selection.Rows.AutoFit
    Range("F3").Select
End Sub

Bei PrintArea steht aber die Absolute Adresse vom Zeitpunkt der Makroerstellung. Die Zelle A6 und die Spalte H bleibt ummer gleich nur die 21 hinter H muss durch die Variable LetzteZeile erstzt werden. Wie geht das?
MfG. Peter

(EXCEL 365, WORD 365, WIN 10, WIN 7)
ahapezet
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 1052
Registriert: 03. Jan 2010, 14:22

Re: VBA Variable in Absolute Adresse umwandeln

Beitragvon Gast » 30. Jun 2022, 16:44

with activesheet
.PageSetup.PrintArea = .Range(Cells(6, 1), Cells(letztezeile, 8)).address(1,1)
end with
Gast
 

Re: VBA Variable in Absolute Adresse umwandeln

Beitragvon slowboarder » 30. Jun 2022, 16:45

HI
die .PrintArea braucht nur einen Text, der wie eine Zelladresse aussieht.
ob die $ dann mit dabei sind oder nicht, ist auch egal. Die sind nur relevant, wenn die Adresse in einer Formel in einer Zelle steht und von dort in eine andere Zelle kopiert wird. Dann muss Excel wissen, ob es den Bezug auf den angegeben Zellen belassen soll oder ob dieser "mitwandern" soll.
Für alle anderen Fälle sind die $ irrelevant und es ist egal, ob man sie angibt oder nicht.

also wie gesagt, wie du den Text erstellst, ist egal.
Wenn nur die untere Zeile variabel ist und der Rest fix, dann gehts am einfachsten über die normale Textverkettung, wenn die Zeilennummer als Variable vorliegt:

Code: Alles auswählen
.printarea = "A6:H" & letzteZeile


das Range(Cells(Zeile1, Spalte2), Cells(Zeile2, Spalte2)).Address kommt dann zum einsatz, wenn auch die letzte Spalte als numerische Variable (Spaltennummer) vorliegt oder wenn nicht nur die untere Begrenzung sondern auch die obere Begrenzung variabel ist, dann wirds mit dem Verketten unübersichtlich.

Gruß Daniel
slowboarder
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 29284
Registriert: 18. Apr 2009, 13:33

Re: VBA Variable in Absolute Adresse umwandeln

Beitragvon ahapezet » 30. Jun 2022, 23:11

Hallo Daniel

Vielen Dank für Deine ausführliche Hilfe. Mein Problem ist gelöst und das Makro als Beispiel in meine Makrosammlung aufgenommen.
MfG. Peter

(EXCEL 365, WORD 365, WIN 10, WIN 7)
ahapezet
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 1052
Registriert: 03. Jan 2010, 14:22

Re: VBA Variable in Absolute Adresse umwandeln

Beitragvon ahapezet » 30. Jun 2022, 23:13

Hallo Gast

auch Dir ein Danke für die Hilfe.
MfG. Peter

(EXCEL 365, WORD 365, WIN 10, WIN 7)
ahapezet
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 1052
Registriert: 03. Jan 2010, 14:22

Re: VBA Variable in Absolute Adresse umwandeln

Beitragvon snb » 01. Jul 2022, 10:03

Und was ist das Ergebnis von

Code: Alles auswählen
Sub M_snb()
   activesheet.printout
End Sub
snb
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 9426
Registriert: 25. Sep 2014, 16:37

Re: VBA Variable in Absolute Adresse umwandeln

Beitragvon ahapezet » 01. Jul 2022, 13:51

Hallo snb

wenn ich Deine Frage richtig verstehe möchtest Du wissen was Dein Code bewirkt. Ganz Einfach, Es startet den Ausdruck der Liste. Das war aber nicht mein Problem. Bevor ein Ausdruck gestartet wird, muss zuerst der Druckbereich festgelegt werden und da die Liste jeden Monat unterschiedlich lang ist, lege ich den Druckbereich per Makro fest. Ich habe keine Lust dies jedesmal händisch zu machen oder mehrere Seiten nur mit Gitternetz versehene Blätter auszudrucken.

Die Codezeile für den Druckstart kann ich aber in einem anderen Makro gebrauchen. Danke
MfG. Peter

(EXCEL 365, WORD 365, WIN 10, WIN 7)
ahapezet
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 1052
Registriert: 03. Jan 2010, 14:22

Re: VBA Variable in Absolute Adresse umwandeln

Beitragvon snb » 01. Jul 2022, 14:11

Excel passt das Druckbereich automatisch an. Das geht ohne printarea.
Also: lösche Printarea und teste erneut.
Wenn mehr gedrückt wird als das Arbeitsblatt gefüllte Zellen hat mußt du vielleicht die leere Spalten und Zeilen erst 'deleten'.
snb
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 9426
Registriert: 25. Sep 2014, 16:37

Re: VBA Variable in Absolute Adresse umwandeln

Beitragvon RPP63 » 02. Jul 2022, 10:37

Moin!
Ja, ich befürchte auch, dass hier Formeln und/oder Formatierungen (Rahmen!) "auf Vorrat" gehalten werden …
mehrere Seiten nur mit Gitternetz versehene Blätter

Stellt sich natürlich die Frage, welchen Sinn dies hat, ahapezet.

Gruß Ralf
Benutzeravatar
RPP63
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 11894
Registriert: 19. Okt 2012, 17:41
Wohnort: mitten im Pott

Re: VBA Variable in Absolute Adresse umwandeln

Beitragvon ahapezet » 03. Jul 2022, 20:54

Hallo RPP63 und snb

Ralf Du hast recht, es werden Formeln und unterschiedliche Gitternetzlinien vorgehalten denn die Daten für die Liste werden mit der Formel =FILTER(...) eingelesen. Wenn ich z.B. in Zelle A1 eine 2 eingebe, werden alle Daten vom Feb. aufgelistet und da nicht jeden Monat gleichviel Daten vorhanden sind, sind die Listen auch ungleich lang.
Hab Ihr mir da vielleicht einen Tipp wie sich die ungleichen Gitternetzlinien sowie Formeln automatich an die Länge der Listen anpassen?
MfG. Peter

(EXCEL 365, WORD 365, WIN 10, WIN 7)
ahapezet
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 1052
Registriert: 03. Jan 2010, 14:22

Re: VBA Variable in Absolute Adresse umwandeln

Beitragvon RPP63 » 04. Jul 2022, 03:40

Moin!
Wenn Du mit dem "normalen" Rahmen leben kannst, solltest Du die bedingte Formatierung nehmen und dort den Rahmen setzen.
Bereich E1:Gxxx (ausreichend) markieren
Formel ist: =E1<>""
Dann zeichnet Excel die Rahmen automatisch im Spill-Bereich der FILTER()-Formel:

Bild

es werden Formeln und unterschiedliche Gitternetzlinien vorgehalten

Die Formeln sollten sich auf den Spill-Bereich beziehen, hier also =E2#

Gruß Ralf
Benutzeravatar
RPP63
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 11894
Registriert: 19. Okt 2012, 17:41
Wohnort: mitten im Pott

Re: VBA Variable in Absolute Adresse umwandeln

Beitragvon ahapezet » 04. Jul 2022, 16:13

Hallo Ralf

Danke für Deine Tipps. Wie Du selbst schon erwähnt hast, kann man mit der Bedinkten Formatierung nur einen 'normalen' Rahmen erstellen.

Das mit den Formel für den Spill-Bereich begreife ich nicht. Dazu bräuchte ich von Dir genauere Info bez. ein Beispiel.
Die Formeln habe ich schon so erstellt dass zuerst kontrolliert wird ob z.B. die Zelle B10 leer ist und erst dann erfolgt die eigendliche Berechnung. Diese Formel steht in vielen weiteren Zeilen und wird bei Bedarf erweitert.
=WENN(B10="";"";WENN(E10=$L$3;G10*$L$2;""))
Wie würde da die Formel für den Spill-Bereich aussehen?
MfG. Peter

(EXCEL 365, WORD 365, WIN 10, WIN 7)
ahapezet
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 1052
Registriert: 03. Jan 2010, 14:22

Re: VBA Variable in Absolute Adresse umwandeln

Beitragvon HKindler » 05. Jul 2022, 08:06

Hi,

wie sieht denn die Formel in B10 aus? Und um weiteren Nachfragen vorzubeugen: stell doch einfach mal eine Beispieldatei rein.

Eine Spill-Formel würde z.B. so aussehen:
=WENN(B10#="";"";G10#*L2)
Dann müssen in B10 und G10 aber auch Spill-Formen stehen. Ansonsten:
=WENN(B10:B99="";"";G10:G99*L2)
Gruß,
Helmut

----------------------------
Windows 10 Enterprise (64 Bit) / Office 365 ProPlus (32 Bit)
Benutzeravatar
HKindler
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 7327
Registriert: 04. Jul 2013, 09:02
Wohnort: Schwarzwald

Re: VBA Variable in Absolute Adresse umwandeln

Beitragvon ahapezet » 05. Jul 2022, 09:51

Hallo Helmut

Vielen Dank für Deine Hilfe. Die 2te Formel war ein Folltreffer. Und wieder habe ich dazugelernt wie ich andere Dateien 'verbösern' kann.
MfG. Peter

(EXCEL 365, WORD 365, WIN 10, WIN 7)
ahapezet
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 1052
Registriert: 03. Jan 2010, 14:22

Re: VBA Variable in Absolute Adresse umwandeln

Beitragvon HKindler » 05. Jul 2022, 10:58

Hi,

ich bin immer noch der Meinung, dass es sinnvoll wäre deine Datei hier hochzuladen. Da gibt es bestimmt noch einiges zu verbessern....
Gruß,
Helmut

----------------------------
Windows 10 Enterprise (64 Bit) / Office 365 ProPlus (32 Bit)
Benutzeravatar
HKindler
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 7327
Registriert: 04. Jul 2013, 09:02
Wohnort: Schwarzwald

Nächste

Zurück zu Excel Forum (provisorisch)

Wer ist online?

Mitglieder in diesem Forum: steve1da und 102 Gäste