Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Auswahlbereich aus Zelle übernehmen
#1
Hallo zusammen
leider komme ich bei einem vermutlich einfachen Problem nicht weiter. 

Ich möchte gerne auf einem Tabellenblatt denjenigen Bereich als pdf ausgeben, den der Nutzer wählt.

In einer Zelle steht der Bereich der ausgegeben werden soll. Damit ich bei 20 möglichen Bereichen nicht 20 Mal das selbe Makro mit anderem Bereich auflisten muss. strebe ich eine dynamische Lösung an.

Als Vorgabe steht in der Zelle 'AA8' der Bereich 'Range ("A11:B54")'.

So - wenn ich im Code 

                                Range ("A11:B54").ExportAsFixedFormat Type:=xlTypePDF, Filename:=DateiName, Quality:=xlQualityStandard, IncludeDocProperties:=True, _
                                IgnorePrintAreas:=False, OpenAfterPublish:=True

einsetzte, funktioniert alles bestens. ich möchte aber gerne mit einem Verweis auf die Zelle mit dem entsprechenden Bereich arbeiten z.B.

                                Tabelle9.Range("AA8").ExportAsFixedFormat Type:=xlTypePDF, Filename:=DateiName, Quality:=xlQualityStandard, IncludeDocProperties:=True, _
                                IgnorePrintAreas:=False, OpenAfterPublish:=True

dann wird mir nur der Inhalt der Zelle AA8 ausgewählt und als pdf ausgegeben.

was mache ich da falsch?
Antworten Top
#2
ungetestet:

Tabelle9.Range([AA8]).ExportAsFixedFormat Type:=xlTypePDF, Filename:=DateiName, Quality:=xlQualityStandard, IncludeDocProperties:=True, _
IgnorePrintAreas:=False, OpenAfterPublish:=True

mit AA8: "A11:B54"
Antworten Top
#3
Tabelle9.Range(Range("AA8").Value)
wobei in AA8 nur die Adresse A11:B54 steht.
Hat Dir mein Beitrag geholfen? Dann hilf auch Du - mit einer Spende an Wikipediadie Tafeln oder aktion-deutschland-hilft.de
Antworten Top
#4
Bin nicht so die VBA-Leuchte ;)
Antworten Top
#5
(28.04.2023, 17:00)LCohen schrieb: Bin nicht so die VBA-Leuchte ;)
...und ich halt nicht die Formel-Leuchte. Deswegen ergänzen wir uns und lernen voneinander. Das ist doch der Sinn von Foren.
Hat Dir mein Beitrag geholfen? Dann hilf auch Du - mit einer Spende an Wikipediadie Tafeln oder aktion-deutschland-hilft.de
Antworten Top
#6
Hallöchen,

wobei
Zitat:Tabelle9.Range([AA8])
auch ok ist, testbar z.B. durch MsgBox Tabelle9.Range([AA8]).Address
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#7
(29.04.2023, 10:27)schauan schrieb: wobei … auch ok ist
Die Evaluate-Methode ist eine unnötig rechenintensive Art, um einen Zellwert auszulesen. Das macht man am effektivsten über die Value-Eigenschaft. Die Evaluate-Methode hat sicher auch ihre Daseinsberechtigung, aber eben nicht hier.
Hat Dir mein Beitrag geholfen? Dann hilf auch Du - mit einer Spende an Wikipediadie Tafeln oder aktion-deutschland-hilft.de
Antworten Top
#8
Lass das nicht snb lesen, EarlFred! Wink
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Antworten Top
#9
(29.04.2023, 12:11)RPP63 schrieb: Lass das nicht snb lesen, EarlFred! Wink

Ich würde es ihm sogar laut vorlesen, wenn ich auf eine informative Diskussion hoffen kann.
Hat Dir mein Beitrag geholfen? Dann hilf auch Du - mit einer Spende an Wikipediadie Tafeln oder aktion-deutschland-hilft.de
Antworten Top
#10
Dann versuche ich einmal, diese Diskussion anzustoßen, EarlFred!
Auch ich habe mehrfach gelesen, dass die Evaluierung mittels [] multi-bäääh ist.

Ich habe das immer so hingenommen.
Ich habe mal einen kurzen Code zur Validierung des "Mythos" geschrieben.
(es geht ausschließlich um das Füllen einer Range-Objektvariable)

Sub Volicity()
Dim Start#, Bereich As Range, i&, k&
Range("A1") = "Z1:RPP63"
For k = 1 To 100000 Step 99999
  ' Value 
  Start = Timer
  For i = 1 To k
    Set Bereich = Range(Range("a1").Value)
    Set Bereich = Nothing
  Next
  Debug.Print Format(k, "#,##0") & "-maliges Value: " & Timer - Start
  ' Text 
  Start = Timer
  For i = 1 To k
    Set Bereich = Range(Range("a1").Text)
    Set Bereich = Nothing
  Next
  Debug.Print Format(k, "#,##0") & "-maliges Text: " & Timer - Start
  ' Evaluate 
  Start = Timer
  For i = 1 To k
    Set Bereich = Range(["A1"])
    Set Bereich = Nothing
  Next
  Debug.Print Format(k, "#,##0") & "-maliges Evaluate[]: " & Timer - Start
Next
End Sub

Ergibt auf meiner alten Möhre:
Code:
1-maliges Value: 0
1-maliges Text: 0
1-maliges Evaluate[]: 0
100.000-maliges Value: 1,150390625
100.000-maliges Text: 2,419921875
100.000-maliges Evaluate[]: 1,662109375

Und ja!
[] ist ca. 50 % langsamer.
Da in diesem Thread der Range nur einmal ausgewertet wird, reden wir über eine Differenz von einer halben hunderttausendstel Sekunde.
Imo homöopathisch im Vergleich zur .ExportAsFixedFormat-Methode.

Gruß Ralf

Durchaus interessant:
Ersetze ich Range("A1") durch das gleichbedeutende Cells(1),
so erreiche ich ich eine Beschleunigung der Value-Eigenschaft um 25 %!
Somit ist Value jetzt doppelt so schnell wie [] (die ja Cells() nicht kennt).
Code:
100.000-maliges Value: 0,859375
100.000-maliges Text: 2,267578125
100.000-maliges Evaluate[]: 1,640625
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste