Format + indirekt Range

Von: , Frage gestellt am Do, 10. Jul 2008

Hallo VBA-Kenner,

ich habe (wieder einmal) ein Problem mit "RANGE".

Worksheets("DRUCK").PageSetup.RightHeader="&R"&Format(Range("WERTE!A"&Range("P2")),"dd.mm.")& _
" - "&Format(Range("WERTE!A"&Range("Q2")),"dd.mm.yyyy")


WERTE!P2 : 123 (Zeilennummer)
WERTE!Q2 : 456 (Zeilennummer)
A123 : 09.06.2008
A456 : 10.07.2008

funktioniert nicht.

Aushilfsweise habe ich mal die Daten in AY15 und AY16 kopiert und mit

Worksheets("DRUCK").PageSetup.RightHeader="&R"&Format(Range("WERTE!AY15"), "dd.mm.")& _
" - "&Format(Range("WERTE!AY16"),"dd.mm.yy")

WERTE!AY15 : 09.06.2008
WERTE!AY16 : 10.07.2008

funktioniert es.
Anzeige in der Druckansicht von DRUCK : 09.06. – 10.07.2008

Während der Konstrukt

Range("A"&Range("P2"),"A"&Range("Q2")).Select


wiederum funktioniert.

Worin besteht da die Logik sprich die Kontinuität von VBA ?

Gruß Manne

11 Antworten zu dieser Frage

  1. Antwort von nach einer Stunde 0 hilfreich
    Re: Format + indirekt Range

    Hi Manne,
    die Versison mit dem .Value meinte ich so:

    Sub Makro1()
    Range("P2") = 123
    Range("Q2") = 456
    Range("A123") = "09.06.2008"
    Range("A456") = "10.07.2008"
    Worksheets("WERTE").PageSetup.RightHeader = "&R" & Format(Range("WERTE!A" & Range("P2").Value), "dd.mm.") & _
    " - " & Format(Range("WERTE!A" & Range("Q2").Value), "dd.mm.yyyy")
    End Sub

    Gruß
    Reinhard

  2. Antwort von nach 59 Minuten 1 hilfreich
    Re: Format + indirekt Range

    Worksheets("DRUCK").PageSetup.RightHeader="&R"&Format(Range("WERTE!A"&Range("P2")),"dd.mm.")&
    _
    " -
    "&Format(Range("WERTE!A"&Range("Q2")),"dd.mm.yyyy")


    WERTE!P2 : 123 (Zeilennummer)
    WERTE!Q2 : 456 (Zeilennummer)
    A123 : 09.06.2008
    A456 : 10.07.2008

    funktioniert nicht.
    Worin besteht da die Logik sprich die Kontinuität von VBA ?
    Hi Manne,

    dein Codeschnipsel funtioniert solange du dich im Blatt WERTE aufhälst.

    Bist du nicht im Blatt WERTE musst du es soschreiben:

    Sub tt()
    Range("WERTE!P2") = 123
    Range("WERTE!Q2") = 456
    Range("WERTE!A123") = "09.06.2008"
    Range("WERTE!A456") = "10.07.2008"
    Worksheets(3).PageSetup.RightHeader = "&R" & Format(Range("WERTE!A" & Range("WERTE!P2")), "dd.mm.") & _
    " - " & Format(Range("WERTE!A" & Range("WERTE!Q2")), "dd.mm.yyyy")
    End Sub

    oder so, je nachdem was du möchtest:

    Sub Makro1()
    Range("WERTE!P2") = 123
    Range("WERTE!Q2") = 456
    Range("A123") = "09.06.2008"
    Range("A456") = "11.07.2008"
    Worksheets("WERTE").PageSetup.RightHeader = "&R" & Format(Range("WERTE!A" & Range("P2").Value), "dd.mm.") & _
    " - " & Format(Range("WERTE!A" & Range("WERTE!Q2").Value), "dd.mm.yyyy")
    End Sub

    Gruß
    Reinhard

    • Antwort von nach 3 Stunden 0 hilfreich
      Re^2: Format + indirekt Range

      Hallo Reinhard,



      Worksheets("DRUCK").PageSetup.RightHeader="&R"&Format(Range("WERTE!A"&Range("P2")),"dd.mm.")& _
      " - "&Format(Range("WERTE!A"&Range("Q2")),"dd.mm.yyyy")


      Vorgängerformeln (gekürzt)
      WERTE!P2 : =VERWEIS(2;1/($A$1:$A$65535=<suchoption>);ZEILE(A:A)) : Zeilennummer)123
      WERTE!Q2 : =MAX((INDIREKT("A"&P2):A65536<>"")*ZEILE(INDIREKT("A"&P2):A65536)) : (Zeilennummer) 456
      A123 : 09.06.2008
      A456 : 10.07.2008

      funktioniert so wie angegeben.
      Anzeige : 09.06. - 10.07.2008
      dein Codeschnipsel funtioniert solange du dich im Blatt WERTE
      aufhälst.

      Und genau das war mein Fehler. Ich war in gar keinem Blatt. Ich Dummerle !

      Die Angabe ".Value" ist also optional und nicht relevant? Es geht auch ohne. Oder hat sie noch eine mir nicht bekannte Funktion?

      Danke und Gruß von Manne

      • Antwort von nach 4 Stunden 0 hilfreich
        Re^3: Format + indirekt Range

        Hallo Manne, Vorgängerformeln (gekürzt)
        WERTE!P2 :
        =VERWEIS(2;1/($A$1:$A$65535=<suchoption>);ZEILE(A:A)) :
        Zeilennummer)123
        WERTE!Q2 :
        =MAX((INDIREKT("A"&P2):A65536<>"")*ZEILE(INDIREKT("A"&P2):A65536)) (Zeilennummer) 456
        ähem, schön das alles läuft und ich mich nicht mit den Formeln rumprügeln muß, sie klingen nach www.excelformeln.de und vieles was da steht ist mir unbegreiflich, so wie schon allein der Term
        1/($A$1:$A$65535=<suchoption>)
        in der Verweisfunktion. dein Codeschnipsel funtioniert solange du dich im Blatt WERTE
        aufhälst.

        Und genau das war mein Fehler. Ich war in gar keinem Blatt.
        Ich Dummerle !
        Bist du fremd gegangen, wo warste denn? *gg* Die Angabe ".Value" ist also optional und nicht relevant? Es
        geht auch ohne. Oder hat sie noch eine mir nicht bekannte
        Funktion?
        Jain.
        Wenn du .Value in dem einen Code von mir wegläßt gibts eine Fehlermeldung.
        Normalerweise langt in Excel-Vba
        x=Range("A1")
        aber nicht immer, gelegentlich geht das schief und man muß
        x=Range("A1").Value
        benutzen.
        Und das ist noch nicht alles, sehr selten aber dann sehr notwendig muß man das so schreiben:
        x=Range("A1").Text

        Jetzt kannst du dir natürlich in A1 verschiedenes eintragen und danach immer sowas ablaufen lassen:

        Sub Test()
        MsgBox Range("A1").Value
        MsgBox Range("A1").Text
        End Sub

        und du wirst wahrscheinlich keinen Unterschied sehen, aber glaub mir bitte, es gibt ihn.

        Z.B. im Code von FAQ:2363 mußte ich .Text benutzen da .Value schiefging

        Gruß
        Reinhard

        • Antwort von nach 3 Tagen 0 hilfreich
          Re^4: Format + indirekt Range

          Hallo Reinhard,

          bin wieder da. 'Tschuldigung meine verspätete Antwort. sie klingen nach www.excelformeln
          hast richtig geraten. Dort habe ich angefangen Excel zu lernen.(Sehr gute Seite!) 1/($A$1:$A$65535=<suchoption>)in der Verweisfunktion.
          soll nur heisen: es wird nach diesem Suchwert gesucht
          Bist du fremd gegangen, wo warste denn? *gg*

          Ich ein ständiger Fremdgänger. Ich nehme jede Hilfe, wo ich sie herbekommen kann. Spotlight und Office-Lösung haben mir sehr viel und gut bei Excel geholfen. Danke an die Jungs!
          Jetzt brauche ich kompetente Hilfe bei VBA und ich denke, jetzt bin ich hier richtig. und demnächst werde ich Hilfe brauchen bei Access. Gibt es da eine gute Adresse?

          Danke für den Value-Hinweis. Ich werde ihn beachten.

          Gruß Manne

      • Antwort von nach 12 Stunden 0 hilfreich
        Re^3: Format + indirekt Range

        Grüezi Manne ;-) Die Angabe ".Value" ist also optional und nicht relevant? Es
        geht auch ohne. Oder hat sie noch eine mir nicht bekannte
        Funktion?
        Optional ist gar nichts ;-)

        Die einzelnen Eigenschaften eines Ranges haben ganz unterschiedliche Aufgaben und Inhalte.

        .Value ist bloss die Standard-Eigenschaft die verwendet wird wenn keine explizite Angabe gemacht wird.

        Aus Gründen der Überisicht und der klaren Definition würde ich empfehlen immer mit expliziten Angaben zu arbeiten auch wenn der Code dadurch etwas länger wird.


        Einige Unterschiede der Eigenschaften sind folgende:

        .Value    - gibt den reinen Wert der Zelle wieder
        .Text     - gibt den Wert der Zelle inklusive Zellenformat als Text wieder
        .Formula  - gibt die in der Zelle enthaltene Formel in
                    Standard-schreibweise (englisch) wieder



        Es gibt noch viel mehr dieser Eigenschaften, dia aber alle auch in der Online-Hilfe beschrieben sind.

        --
        Mit freundlichen Grüssen

        Thomas Ramel
        - MVP für MS-Excel -

        • Antwort von nach 3 Tagen 0 hilfreich
          Re^4: Format + indirekt Range

          Salve Thomas,

          du bist wohl in jedem Forum zuhause? Auch bei M. Weber ist von Dir zu lesen. Es ist schön wiedermal einen guten Rat von Dir zu bekommen. Danke.
          Ich bin mit meinem Projekt zu 99,9% fertig. Ohne Deine Hilfe wäre es Nichts geworden. Nur noch kleine Schönheitsfehler, wie Druckformatierung und Drucken ist nicht ausgereift.
          Ich benötige ein genaues Beispiel für:

          ActiveSheet.PrintOut(Copies:=2,Preview)

          Syntax gibts überall, aber keine Beispiele. Nach Syntax funktioniert's nicht. Syntaxfehler: Erwartet: Benannter Parameter.
          Mehr als nach den Syntax gehen, kann man wohl nicht.
          Was bedeutet
          PrintQuality = -3
          ? Soll das Entwurfqualität sein?
          Leider sind die Eigenschaften immer schlecht erklärt.

          Allgemein gesagt: Wenn es Eure Hilfe in den Foren nicht gäbe, hätte ich, und bestimmt viele andere auch, schon lange das Handtuch geworfen. VBA-Bücher, ich habe vier davon, sind nicht aussagekräftig genug, gehen nicht in's Detail und sind fehlerbehaftet. VBA-Hilfe ist sehr umständlich und nicht ausführlich. Im I'net wird viel fabuliert. Sowas ist tötlich für Anfänger! Man verlier schnell die Freude an VBA.

          So, nun Schluß für heute().

          Gruß Manne

          • Antwort von nach 3 Tagen 0 hilfreich
            Re^5: Format + indirekt Range

            Grüezi Manne du bist wohl in jedem Forum zuhause?
            Mal da und mal dort - wo es mir gefällt bleibe ich durchaus auch länger :-) Auch bei M. Weber ist von
            Dir zu lesen. Es ist schön wiedermal einen guten Rat von Dir
            zu bekommen. Danke.
            Aber gerne doch; es freut mich wenns dir geholfen hat. Nur noch kleine Schönheitsfehler, wie
            Druckformatierung und Drucken ist nicht ausgereift.
            Ich benötige ein genaues Beispiel für:

            ActiveSheet.PrintOut(Copies:=2,Preview)

            Was genau möchtest Du hier denn tun?

            Ein Tabellenblatt zweimal ausdrucken oder es in der Seitenansicht betrachten?
            IMO geht nicht beides gleichzeitig, insofern denke ich, dass sich die beiden Methoden, die Du oben gemeinsam anwendest eigentlich gegenseitig ausschliessen.

            Aber wie gesagt, wenn Du klar umschreibst was Du tun willst, bekommen wir das sicher hin. Mehr als nach den Syntax gehen, kann man wohl nicht.
            Was bedeutet
            PrintQuality =
            -3
            ? Soll das Entwurfqualität
            sein?
            Leider sind die Eigenschaften immer schlecht erklärt.
            Wo und wie genau hast du denn danach gesucht?

            Setzte im VBA-Editor mal den Cursor mitten in den Begriff 'PrintOut' und drücke dann F1 - die Online-Hilfe wird sich genau am richtigen Ort öffnen. Allgemein gesagt: Wenn es Eure Hilfe in den Foren nicht gäbe,
            hätte ich, und bestimmt viele andere auch, schon lange das
            Handtuch geworfen. VBA-Bücher, ich habe vier davon, sind nicht
            aussagekräftig genug, gehen nicht in's Detail und sind
            fehlerbehaftet. VBA-Hilfe ist sehr umständlich und nicht
            ausführlich.
            Das liegt einerseits in der Natur der Sache - exakt das was man sucht wird man kaum wo genau so finden.

            Aber wenn Du dein Problem individuell und genau schilderst, vor allem auch das Umfeld und was Du tun willst (ohne viel nicht funktionierenden Code zu posten), wird es in aller Regel rasch möglich sein dich konkrtet zu unterstützen. Im I'net wird viel fabuliert. Sowas ist tötlich
            für Anfänger! Man verlier schnell die Freude an VBA.
            Na, das wär aber schade - wir tun unser Möglichstes, dass dies nicht geschieht ;-)

            Mit freundlichen Grüssen
            Thomas Ramel

            --
            - MVP für Microsoft-Excel -
            [Win XP Pro SP-2 / xl2003 SP-3]

            • Antwort von nach 4 Tagen 0 hilfreich
              Re^6: Format + indirekt Range

              Salve Thomas, Was genau möchtest Du hier denn tun?
              Ein Tabellenblatt zweimal ausdrucken und es vorher in der
              Seitenansicht betrachten. IMO geht nicht beides gleichzeitig
              Die exakte Syntaxnotation :

              ActiveSheet.PrintOut([From],[To],[Copies],[Preview],[ActivePrinter],[PrintToFile],[Collate],[PrToFileName])


              Für mich eine Auflistung optionaler Anweisungen, die sich nicht gegenseitig ausschließen. Dann müßte die Notation so aussehen :

              ActiveSheet.PrintOut([From]|[To]|[Copies]|[Preview]|[ActivePrinter]|[PrintToFile]|[Collate]|[PrToFileName])


              Und der Code dazu so :

              ActiveSheet.PrintOut([From])

              ActiveSheet.PrintOut([To])

              ActiveSheet.PrintOut([Copies:=2])

              ActiveSheet.PrintOut([PrToFileName])

              ActiveSheet.PrintOut([Preview])


              ...u.s.w. Wie nun richtig, alle Anweisungen zusammen oder jede Anweisung einzeln ?
              Nirgendwo eine vernünftige Information oder ein sich selbsterklärendes Beispiel !

              Der Wert 300 bei Seitenansicht->Layout->Optionen->Qualitätseinstellungen bedeutet wohl Entwurfsdruckqualität, oder?

              .PageSetup.PrintHeadings.Draft = True
              = Haken in Entwurfsqualität bei der Seitenansicht -> Layout->Tabelle ?


              .PageSetup.PrintHeadings = True

              Werden hiermit die Spaltenbuchstaben und die Zeilennummern mitgedruckt?

              .PageSetup.PrintTitleRows = ActiveSheet.Rows(3).Address
              .PageSetup.PrintTitleColumns = ActiveSheet.Columns("A:C").Address

              Bedeutet dies ein Titelzeilendruckbereich A1 bis C3 oder jedesmal Zeilen 1 bis 3 am oberen Rand und Spalten A bis C am linken Rand ?

              Viele Fragen, oder?

              Dank für den Link auf die Alexandra-von-Cube-Seite. Sie schreibt schön locker und leicht verständlich. Sie sollte so weitermachen und noch andere VBA-Themen behandeln.

              Randbemerkung : Alle Hinweise, Tipps und Bsp-Codes kommen bei mir in die "Hall of fame", d.h.: überarbeit in eine Formel- und Code-Sammlung, die als Nachschlagewerk dient. Nichts ist umsonst gedacht!

              Gruß Manne
              WIN XP Prof SP3, Office2003 Prof SP3 (leider mit neusten Updates)



Keine passende Antwort gefunden? Jetzt eigene Frage stellen!