Herbers Excel-Forum - das Archiv

Makro lesen

Bild

Betrifft: Makro lesen
von: Claudia

Geschrieben am: 19.12.2006 18:50:42
Einen erholsamen Abend gleich mal,
ich habe folgende Frage: ich habe diesen Code aus einem Makro
.Cells(ZeileFormel, SpalteL + 11).FormulaR1C1 = _
"=IF(R[]C[" & -4 & "]=R[]C" & SpalteL + 2 & ",1,0)"
leider kann ich ihn ab der 2. Zeile nicht lesen, aber es bewirkt folgende Formel: WENN(x=y;1;0)
Wie muss ich den auf die Formel WENN(ODER(x=y; x=y+0,5; x=y-0,5)) ändern?
Kann vielleicht auch jemand erklären was dieser Code genau aussagt/wie er zu verstehen ist?
DANKE und liebe Grüße aus Wien,
Claudia
Bild

Betrifft: AW: Makro lesen
von: ChrisL

Geschrieben am: 19.12.2006 19:13:16
Hallo Claudia
Ich starte mal einen Erklärungsversuch.
R = Row d.h. Zeile
C = Column d.h. Spalte
Folgendes Beispielmakro:
Sub t()
Dim ZeileFormel As Long
Dim SpalteL As Integer
ZeileFormel = 1
SpalteL = 1
With Worksheets("Tabelle1")
.Cells(ZeileFormel, SpalteL + 11).FormulaR1C1 = _
"=IF(R[]C[-4]=R[]C" & SpalteL + 2 & ",1,0)"
End With
End Sub

Cells(1, 1 + 11) also in Zelle L1 wird eingetragen (12. Spalte).
R[] (Zeile keine Abweichung) und C[-4] (d.h. Spalte 12 minus 4 = 8 also Spalte H)
= Zelle H1
R[] (Zeile keine Abweichung) und Varialbe 1 + 2 = 3 (d.h. Spalte C)
= Zelle C1
Alles andere ist nur Übersetzungsarbeit:
=IF(OR(x=y,x=y+0.5,x=y-0.5),True,False)
Wobei IF/WENN kannst du in diesem Fall weglassen:
=OR(x=y,x=y+0.5,x=y-0.5)
Gruss
Chris
Bild

Betrifft: AW: Makro lesen
von: Claudia

Geschrieben am: 19.12.2006 19:37:34
Hallo Chris,
ich habe versucht es gewissenhaft umzusetzten, aber er zeigt mir einen Fehler an. Warum?
(ZeileFormel, SpalteL + 11).FormulaR1C1 = _
"=OR(R[]C[" & -4 & "]=R[]C" & SpalteL + 2 & ",R[]C[" & -4 & "]=R[]C" & SpalteL + 2 & " +0.5, R[]C[" & -4 & "]=R[]C" & SpalteL + 2 & " -0.5 ,1,0)"
Ich bin ja der Meinung, dass VBA mich nicht mag ;-)
Danke für deine Hilfe!
Bild

Betrifft: AW: Makro lesen
von: ChrisL

Geschrieben am: 19.12.2006 19:43:14
Hallo Claudia
Keine Panik, das wird schon :-)
Ganz am Schluss hast du noch ",1,0" von der Wenn-Bedingung drin.
Eigentlich egal, aber der Code wird etwas übersichtlicher, wenn du
...R[]C[" & -4 & "]...
änderst in
...R[]C[-4]...
Die Text-Zeichenkette "aufbrechen" musst du nur, wenn eine Variable kommt. Minus 4 ist aber fix.
Gruss
Chris
Bild

Betrifft: AW: Makro lesen - Ich finde, eigentlich...
von: Luc:-?

Geschrieben am: 20.12.2006 04:21:31
...eignen sich die auch in der VBA-Hilfe bevorzugten Range-A1-Langschreibformen bzw die Verwendung von Cells viel besser für Anfänger, Chris & Claudia.
Leider verwendet ausgerechnet der Recorder, über den ja viele einsteigen, was Anderes, nämlich die Nicht-Standard-Bezugsdarstellung Z1S1 (=R1C1). Wenn man eher über die Hilfe bzw besser Anfängerliteratur lernt, kommt man zu verständlicheren Lösungen.
Gruß & FWhn!
Luc :-?
Bild

Betrifft: AW: Makro lesen
von: Daniel Eisert

Geschrieben am: 19.12.2006 20:09:45
Hallo Claudia
Makro-Zeile bewirkt ja, daß eine Formel in eine Excel-Formell in eine Zelle eingetragen wird (so wie wenn du sie von Hand reinschriebst).
Dabei gibt es 4 Varianten:
.FormulaR1C1 =
.Formula
.FormulaLocalR1C1
.FormulaLocal
Der Zusatz R1C1 bedeutet, daß die Zellbezüge in der Z1S1-Schreibweise eingegeben werden müssen. Was das bedeutet, kanns du rausfinden, wenn du unter Extras-Optionen-Allgemein auf die Z1S1-Bezugsart wechselst.
Der Zusatz LOCAL bedeutet, daß die Formeln in der aktuellen Benutzersprache eingegeben werden müssen, ohne diesen Zusatz muß die internationale (Englische) Schreibweise verwendet werden.
Das gilt auch für Dezimal- und Tausender-Trennzeichen)
Leider wird vom Recorder automatisch immer die Komplizierteste Schreibweise (FormulaR1C1) verwendet.
mit FormulaLocal kannst du die Formeln so eingeben, wie du es gewohnt bist.
ACHTUNG: eine Ausnahme: Anführungszeichen, die zur Formel gehören, müssen immer doppelt eingegeben werden ("").
Noch ein kleiner Tip, wenn du wissen willst, wie die entsprechende Formel genau geschrieben wird, dann kannst du sie auch, so wie du sie brauchst in eine Excelzelle reinschreiben (vielleicht steht sie sogar schon drin),
dann selekiertst du die Zelle,
wechselst in den Editor in das Direktfenster und gibt dort ein:
?selection.formulaR1C1
dann bekommst du die Formel so angezeigt, wie du sie im Macrocode reinschreiben musst. (mit Ausnahme der Doppelten "", die musst du noch ergänzen)
Gruß, Daniel
Bild

Betrifft: AW: Makro lesen
von: Claudia

Geschrieben am: 19.12.2006 21:47:02
Hallo Daniel,
Puhh....
ich bin ganz begeistert... ich habs echt "alleine" geschafft...
vielleicht wird ja doch noch ein Programmierer aus mir ;-)))
Ein ganz großes und herzliches DANKE an alle die mir weitergeholfen haben!!!!!!!
Lg, Claudia
PS.: Das mit dem Direktfenster ist genial!
 Bild