Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.04.2024 20:05:21
28.04.2024 18:33:31
28.04.2024 18:25:12
28.04.2024 14:18:05
Anzeige
Archiv - Navigation
1932to1936
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

INDIREKT-Druckbereich anlegen/korr.

INDIREKT-Druckbereich anlegen/korr.
22.06.2023 19:04:05
Andy

Hallo liebe Schlaufüchse!

Ich bin ein Fan und mittlerweile schon ein Stammgast "beim Herber" und möchte meine erste Frage stellen.

Ausgangslage:
Grundsätzlich habe ich einen Druckbereich, der nach Rücksendung der Datei plötzlich als "__xlnm.Print_Area" aufscheint.
Dieser Druckbereich ist im Namensmanager als Indirekt-Formel auf eine Zelle definiert.
Mein Ansatz: defekten Druckbereich mittels Makro löschen und neu anlegen

Hintergrund zur Datei:
Excel mit 150 vorgefertigten Zeilen zum Ausfüllen und 26 Tabellenblättern.
Der korrekte Druckbereich je Tabellenblatt wird mittels Formel in Zelle A1 berechnet, Ergebnis ist zB $A$1:$G$100
Zur Info, die Formel in Zelle A1: ="$A$1:$G$"&(VERGLEICH(0;Tabelle1!C:C;-1)+1)
Dieser errechnete Druckbereich wird im Namensmanager als Druckbereich mit Formel =INDIREKT(Tabelle1!$A$1) angesteuert.
(korrekter Tabellenname = "1" bis "26")

Mein Versuch:

Sub INDIREKT_Druckbereich_korrigieren()

Dim ws As Worksheet
Dim i As Long
Dim nameRef

For i = 19 To 26         'Bezeichnungen der betroffenen Tabellenblätter von 1 bis 26

   'gewünschte Indirekt-Formel im Druckbereich (Namensmanager):
   'gewünschtes Ergebnis: =INDIREKT('1'!$A$1)
   nameRef = "=INDIREKT('" & i & "'!$A$1)" & ""
   
   ' Tabellenblatt auswählen
   Worksheets("" & i & "").Activate
   Set ws = ActiveSheet
   
      ' Korrektur Namensmanager
      With ws
         .Names("__xlnm.Print_Area").Delete       'unbrauchbare Print_Area löschen
        .Names.Add Name:="Druckbereich", _
           RefersTo:=nameRef
        .Names("Druckbereich").Comment = ""
      End With

Next i

End Sub

Das Makro funktioniert grundsätzlich, aber aus der RefersTo wird scheinbar automatisch eine RefersToR1C1 gemacht.
Dann lautet die Formel nicht =INDIREKT('1'!$A$1) sondern =INDIREKT('1'!'Z1S1') und dadurch funktioniert die Indirekt-Formel im Namensmanager offensichtlich nicht.

Ich hoffe, mir kann jemand helfen.

lg Andy

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: INDIREKT-Druckbereich anlegen/korr.
22.06.2023 19:39:54
Ulf
nameRef = "=INDIREKT('" & CStr(i) & "'!$A$1,WAHR)"


AW: INDIREKT-Druckbereich anlegen/korr.
23.06.2023 09:04:43
Andy
Hallo Ulf!
Danke für den prompten Lösungsvorschlag!
Leider sieht die Formel im Namensmanager nach dem Makro so aus: =INDIREKT('19'!Z1S1;'WAHR')
lg Andy


AW: INDIREKT-Druckbereich anlegen/korr.
23.06.2023 09:16:06
onur
nameRef = "=INDIREKT('" & CStr(i) & "'!$A$1,true)"


AW: INDIREKT-Druckbereich anlegen/korr.
23.06.2023 11:06:47
Andy
Danke onur! Jetzt wird schon Mal die Formel richtig im Namensmanager eingetragen.
Der Zusatz TRUE wird anstelle WAHR beim Makro korrekt verarbeitet!!!

Optik passt somit, aber der Druckbereich wird nach dem Makro nicht verarbeitet.
Ich muss in den Namensmanager erneut einsteigen und manuell "nochmal speichern".

Gibt es vlt. so etwas wie eine Update-Funktion, die mir weiterhelfen könnte? Hab' adHoc nichts Passendes gefunden...


Anzeige
AW: INDIREKT-Druckbereich anlegen/korr.
23.06.2023 13:34:58
Ulf
Hi
wenn True in der Formel passt, dann sollte

...
 .Names("__xlnm.Print_Area").Delete
            .Names.Add Name:="Print_Area", _
               RefersTo:=nameRef
...
einen Versuch wert sein, da die Spracheinstellung fürs GUI englisch sein könnte und Excel bei Namensmanager übersetzt.
hth
Ulf.


AW: INDIREKT-Druckbereich anlegen/korr.
23.06.2023 16:14:02
Andy
cooler Ansatz, Ulf! Funktioniert hier leider nicht xD


AW: INDIREKT-Druckbereich anlegen/korr.
24.06.2023 08:11:30
Ulf
Wenn ich in Zelle A1 statt
="$A$1:$G$"&(VERGLEICH(0;Tabelle1!C:C;-1)+1)

="$A$1:$G$"& ZEILEN(D:D)-ANZAHLLEEREZELLEN(D:D)-1
oder
="$A$1:$G$"&(VERGLEICH("";Tabelle1!C:C;-1)+1)

schreibe funzt das auch mit Umbruchvorschau und Namensmanager sofort

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige