Format + indirekt Range

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

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

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

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:blush:A$65535=);ZEILE(A:A)) : Zeilennummer)123
WERTE!Q2 : =MAX((INDIREKT(„A“&amp:stuck_out_tongue_winking_eye:2):A65536"")*ZEILE(INDIREKT(„A“&amp:stuck_out_tongue_winking_eye:2):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

Hallo Manne,

Vorgängerformeln (gekürzt)
WERTE!P2 :
=VERWEIS(2;1/($A$1:blush:A$65535=);ZEILE(A:A)) :
Zeilennummer)123
WERTE!Q2 :
=MAX((INDIREKT(„A“&amp:stuck_out_tongue_winking_eye:2):A65536"")*ZEILE(INDIREKT(„A“&amp:stuck_out_tongue_winking_eye:2):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:blush:A$65535=)
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

Grüezi Manne :wink:

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 :wink:

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 -

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:blush:A$65535=)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

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

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 :smile:

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 :wink:

Mit freundlichen Grüssen
Thomas Ramel

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

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)

Hallo Manne,

du bist wohl in jedem Forum zuhause?

jepp, schwierig in guten Excelforen nicht auf Thomas zu treffen :smile:

Auch bei M. Weber ist von
Dir zu lesen.

Monika hat ein Forum? Wie heißt es denn?

Was bedeutet

PrintQuality =
-3

? Soll das Entwurfqualität
sein?

Gute Frage, k.A. -3 passt absolut nicht zur Hilfe dazu. Grundsätzlich, wenn es denn so wäre daß in der Hilfe stünde:
Printqualitiy kann man drei Werte mitgeben, xlHoch, xlMittel, xlEntwurf, so kann man die Zahlen die hinter den Begriffen stehen herausfinden indem man das Direktfenster aufmacht und ?xlHoch ein-„entert“.

Das klappt hier nicht, ohne Ausproboeren mit paar Werten wüßte ich nix wie man die -3 deuten soll.

Handtuch geworfen. VBA-Bücher, ich habe vier davon, sind nicht
aussagekräftig genug, gehen nicht in’s Detail und sind
fehlerbehaftet.

Wie heißen die Bücher, welche Autoren?

VBA-Hilfe ist sehr umständlich und nicht
ausführlich.

Umständlich kann ich nicht nachvollziehen. Das Andere sehe ich genauso.

Im I’net wird viel fabuliert. Sowas ist tötlich
für Anfänger! Man verlier schnell die Freude an VBA.

Kann ich so nicht bejahen, in den Excelforen wo ich bin wird auc gerne Anfängern geholfen, zur Not im Einzelfall mit einer Schritt für Schritt Anleitung.

Allerdings dann nicht wenn der Anfrager erkennbar noch null Eigenleistung erbracht hat um zur Lösung des Problems zu gelangen.
Ist vielleicht unklar, mal ein Beispiel, hier im Mathebrett steht in der Brettbeschreibung daß keine Hausaufgaben gelöst werden.

Natürlich sind da Profis die im Gegensatz zu mir :smile: jedwede Matheaufgabe lösen können/könnten, aber davon hat der Anfrager doch Null wenn er da eine fertige Lösung erhält. Was soll er bei der nächsten Matheaufgabe machen, wieder nachfragen usw.? bringt doch nix.

Deshalb kriegt er da keine Antwort wenn er einfach die Aufgabe in den Raum stellt.
Stellt er aber die gleiche Aufgaeb als Anfrage ein un beschreibt welche Wege er schon ging um zur Lösung zu gelangen, dann spielt die Brettbeschreibung keinerlei Rolle mehr, man sieht ja dann an welchem Punkt er festhängt und kann ihm gezielt mit einem Hinweis oder einer Komplettlösung helfen.

Analog dazu in Excelforen, wenn da jmd. anfragt wie er denn eine Fußballtippauswertung zur EM basteln soll, kriegt er maximal Hinweise auf schon bestehende Exceltabellen die das machen.
da kann/sollte er sich einarbeiten, versuchen die zu verstehen.

Daraufhin entstehende Detailfragen werden gerne beantwortet, aber halt nicht „Bastelt mir mal 'ne Fußballtippauswertungsdatei in Excel“
Das ginge auch, kein Problem, dafür gibts ja Auftragsprogrammierer…

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

Dito *gg* manchmal babble ich zuviel.

Achja, zu deiner Nachfrage, nein, zu Access kenne ich kein Forum.
Spotlight gibts wohl nicht mehr, mehr fällt mir dazu nix ein, aber frage halt mal im Accesbrett nach bzw. stelle dort deine Accessfragen.

Gruß
Reinhard

Hallo Reinhard,

  1. Versuch einer Antwort. Vorherige Texte werden gelöscht, wenn ich in der 2. Instanz von IE6 browse.

Bücher:

„VBA-Programmierung mit MS-Excel, Das Profibuch“, Monika Weber, Microsoft Press,
„MS Excel Version 2002, Visual Basic, Schritt für Schritt“, Reed Jacobson, Microsoft Press,
„Excel-VBA, Die Praktische Referenz“, Bernd Held, Markt+Technik,
„Access VBA, GE-PACKT“, Meinhard Schmidt, mitp,
„Visual Basic, Excel Makro-Programmierung“, Helma Spona, KnowWare, Heft 126,
„ACCESS 2002 für Einsteiger“, Thomas Barkow, KnowWare, Heft 172,
„Access Formulare und Bereichte“, Thomas Barkow, KnowWare, Heft 18,
„Access 97/2000 für Fortgeschrittene“, Rainer Schubert, KnowWare, Heft 154,
„Access mit Makro automatisieren“, Thomas Barkow, KnowWare, Heft 29.

M. Weber:

http://www.jumper.ch/
Hat kein Forum (mehr). Unter W98SE habe ich meine ersten WORD2000 Versuche gestartet und sie hat mir gute Tipps gegeben.

Was bedeutet

PrintQuality = -3

? Soll das Entwurfqualität sein ?

Habe ich ohne Erklärung im I-Net gefunden. Da fragt man sich sofort : „Davon gibt’s noch mehr ! -2, -1, 0, 1, …?“

VBA-Hilfe :

PrintQuality -> F1 : PrintQuality-Eigenschaft
Beispiele:

Worksheets("Sheet1").PageSetup.PrintQuality = Array(240, 140)
MsgBox "Horizontal Print Quality is " & \_
 Worksheets("Sheet1").PageSetup.PrintQuality(1)

nix von xlHoch, xlMittel oder xlEntwurf
Glücksspiel die richtige Lösung zu finden. Da ich aber kein Glück im Spiel habe, muß ich immer noch für wenig Geld viel arbeiten und am Geldende ist immer noch viel Monat übrig.

PageSetup -> F1 : PageSetup-Objekt

Verwenden Sie die PageSetup-Eigenschaft, um ein PageSetup-Objekt zurückzugeben. Im folgenden Beispiel wird das Papierformat auf Querformat gesetzt und das Arbeitsblatt gedruckt.
With Worksheets("Sheet1")
 .PageSetup.Orientation = xlLandscape
 .PrintOut
End With

Wie heißt dann Hochformat ??? Keine Information !!

Buch :

„Excel-VBA, Die Praktische Referenz“, Bernd Held, Markt+Technik,
Seite 428, Listing 9.44 : Die Methode rahmt einen Bereich ein.

With Worksheets("Tabelle7").Range("A1:E9").BorderAround \_
 .LineStyle:=xlDashDot, ColorIndex:=5, \_
 Weight:=xlThick
End With

Geht nicht. Langes Fluchen und Probieren . Lösung bei mir :

With Sheets("DRUCK").Range("A" & AnfZeile & ":H" & EndZeile).BorderAround \_
 (LineStyle:=xlContinuous, \_
 Weight:=xlMedium, \_
 ColorIndex:=xlAutomatic)
End With

Die Klammern waren das Problem. Man sucht natürlich bei sich zuerst die Fehler und nicht bei B. H. !

Eigenleistung :

Bevor ich die Foren-Spezialisten mit meinen dussligen Fragen belästige, stöbere ich in den oben genannten Büchern und stundenlang im Internet, und selbst bei Fachfragen kommt man da kaum an Pornoseiten vorbei.

Dito *gg* manchmal babble ich zuviel.

Ich auch! Und das auch gut so. Was Persönliches muß sein, wir sind doch keine Automaten.

Quintessenz : Danke für Deinen Tipp:" xlHoch, xlMittel oder xlEntwurf".
War mir nicht bekannt. Die Eigenschaften sind nicht druckerbezogen, also allgemeingültig.

Schönen Abend noch. Manne