4.5k Aufrufe
Gefragt in Tabellenkalkulation von ahorn38 Experte (3.2k Punkte)
Hallo,

habe in einem Makro folgende Formel

Range(Cells(tabend + 4, 6), Cells(tabend + 6, 6)).FormulaLocal = _
"=WENN(RECHTS(E41;1)=""S"";-1*WERT(WENN(LÄNGE(E41)=6;LINKS(E41;4)..........

ich möchte den Zellbezug "E41" in der Excelformel gern "variabe"l gestalten und dafür z.Bsp. wie oben Cell(tabend+5,6) eingeben. Geht das und wie wäre die korrekte Syntax. Habe dazu leider noch nichts gefunden. Danke!!

13 Antworten

0 Punkte
Beantwortet von saarbauer Profi (15.6k Punkte)
Hallo,

müsste so gehen:

Range(Cells(tabend + 4, 6), Cells(tabend + 6, 6)).FormulaLocal = _
"=WENN(RECHTS(" & variabele & ";1)=""S"";-1*WERT(WENN(LÄNGE(" & variabele & ")=6;LINKS(" & variabele & ";4)..........


Gruß

Helmut
0 Punkte
Beantwortet von ahorn38 Experte (3.2k Punkte)
Hallo Helmut,

da muss ich noch mal nachfragen....
Heißt das, dass ich vorher die "variabele" als string "Cell(tabend+5,6)" definieren muss?
0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)
Hallo Andreas,

Du kannst dein Cell(tabend+5,6) direkt in den Code einbauen, musst aber noch Address dranhängen.

Hier mal ein kleiner Code zur Verdeutlichung:

Sub test()

tabend = 3

Cells(tabend + 4, 6).FormulaLocal = "=E" & tabend + 3
Cells(tabend + 5, 6).FormulaLocal = "=" & Cells(tabend + 3, 5).Address
Cells(tabend + 6, 6).FormulaLocal = "=" & Cells(tabend + 3, 5).Address(RowAbsolute:=False)
Cells(tabend + 7, 6).FormulaLocal = "=" & Cells(tabend + 3, 5).Address(ColumnAbsolute:=False)
Cells(tabend + 8, 6).FormulaLocal = "=" & Cells(tabend + 3, 5).Address(RowAbsolute:=False, ColumnAbsolute:=False)


End Sub


Gruß

M.O.
0 Punkte
Beantwortet von saarbauer Profi (15.6k Punkte)
Hallo,

was du alles machen kannst in der Formel oder im Makro ist mit deinen Angaben schwer zu erläutern, da wir nicht genau wissen was du vorhast.

Gruß

Helmut
0 Punkte
Beantwortet von ahorn38 Experte (3.2k Punkte)
Hallo,

danke erst mal für die bisherigen Hinweise, aber leider kommt das Programm über den Befehl nicht hinaus...
Hier noch einmal der komplette Befehl mit der ExcelFormel:

Range(Cells(tabend + 4, 6), Cells(anzahl, 6)).FormulaLocal = _
"=WENN(RECHTS(cell(tabend+5,6);1)=""S"";-1*WERT(WENN(LÄNGE(cell(tabend+5,6))=6;LINKS(cell(tabend+5,6);4);WENN(LÄNGE(cell(tabend+5,6))=7;LINKS(cell(tabend+5,6);5);WENN(LÄNGE(cell(tabend+5,6))=8;LINKS(cell(tabend+5,6);6);WENN(LÄNGE(cell(tabend+5,6))=9;LINKS(cell(tabend+5,6);7);WENN(LÄNGE(cell(tabend+5,6))=10;LINKS(cell(tabend+5,6);8);WENN(LÄNGE(cell(tabend+5,6))=11;LINKS(cell(tabend+5,6);9))))))));WERT(WENN(LÄNGE(cell(tabend+5,6))=6;LINKS(cell(tabend+5,6);4);WENN(LÄNGE(cell(tabend+5,6))=7;LINKS(cell(tabend+5,6);5);WENN(LÄNGE(cell(tabend+5,6))=8;LINKS(cell(tabend+5,6);6);WENN(LÄNGE(cell(tabend+5,6))=9;LINKS(cell(tabend+5,6);7);WENN(LÄNGE(cell(tabend+5,6))=10;LINKS(cell(tabend+5,6);8);WENN(LÄNGE(cell(tabend+5,6))=11;LINKS(cell(tabend+5,6);9))))))))).address"

Die Formel soll einen Texteintrag im Feld "(cell(tabend+5,6)" nach Prüfung entweder in eine positive oder negative Zahl umwandeln. Die Formel funktioniert im Excel einwandfrei, aber ich kriege sie nicht so in mein Makro ... bisher.
Danke für eure Unterstützung
0 Punkte
Beantwortet von saarbauer Profi (15.6k Punkte)
Hallo,

da angaben zur Excelversion fehlen, kann es auch ein Problem der zeichenanzahl sein. Zumindest bis Excel 2003 war diese auf 256 begrenzt.

Versuch es mal mit der Formel

Range(Cells(tabend + 4, 6), Cells(anzahl, 6)).FormulaLocal = _
"=WENN(RECHTS(cell(tabend+5,6);1)=""S"";-1;1)*WERT(LINKS(cell(tabend+5,6);LÄNGE(cell(tabend+5,6)-2)))

Gruß

Helmut
0 Punkte
Beantwortet von ahorn38 Experte (3.2k Punkte)
Hallo Helmut,

ich weiß zwar noch nicht genau warum, aber jetzt funktioniert das Makro dank deiner Formel einwandfrei!!!!!! Ich nutze Excel 2010, da hätte es ja mit der langen Formel auch gehen müssen.... aber egal, das Problem ist gelöst - vielen DANK!!!!
0 Punkte
Beantwortet von ahorn38 Experte (3.2k Punkte)
Hallo Helmut,
ich war doch etwas zu schnell...
Das Makro läuft jetzt mit deiner letzten Formel zwar durch, ich erhalte aber in Excel-Sheet eine Fehlermeldung "#NAME?" an der Stelle, wo diese Formel dann eingetragen ist. Hast du da noch nen Tipp?
0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)
Hallo,

schau dir mal die Formel an, die das Makro einfügt. Da kommt nämlich so etwas raus:

=WENN(RECHTS(cell(tabend+5,6);1)="S";-1;1)*WERT(LINKS(cell(tabend+5,6);LÄNGE(cell(tabend+5,6)-2)))

So muss die Zeile richtig aussehen:

ActiveSheet.Range(Cells(tabend + 4, 6), Cells(anzahl, 6)).FormulaLocal = "=WENN(RECHTS(" & Cells(tabend + 5, 6).Address & ";1)=""S"";-1;1)*WERT(LINKS(" & Cells(tabend + 5, 6).Address & ";LÄNGE(" & Cells(tabend + 5, 6).Address & "-2)))"


Gruß

M.O.
0 Punkte
Beantwortet von ahorn38 Experte (3.2k Punkte)
Hallo M.O.
ja, du hast Recht, die Formel kommt im Excel genau so raus, allerdings kriege ich jetzt mit deiner Formel noch einen "WERT"-Fehler.
Jetzt kommt die Formel so im Excel-Sheet: =WENN(RECHTS($E$2425;1)="S";-1;1)*WERT(LINKS($E$2425;LÄNGE($E$2425-2))) aber mit "#WERT!"

Irgendwie kommen wir der Sache schon näher aber....??
...