Live-Forum - Die aktuellen Beiträge
Datum
Titel
15.07.2024 16:00:57
15.07.2024 15:41:38
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Formel per Makro in eine Zelle schreiben

Formel per Makro in eine Zelle schreiben
27.06.2016 21:04:44
Marco

Guten Abend alle,
Ich habe versucht eine Formel wie einen Text in eine Zelle per Makro zu übergeben. Mit dem Text klappt es aber nicht mit der Formel wieso? Ist eine Formel nicht auch nur ein geschriebener Text? Ich möchte die Formel der Zelle übergeben weil ich nicht die Formel in der Spalte komplett runter ziehen möchte. Kann mir bitte jemand sagen wat ich da machen muss?
.Cells(loLetzte, 3).Value = =WENN(G8="";"";"Ja")
Grüße Marco

16
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Formel per Makro in eine Zelle schreiben
27.06.2016 21:07:15
Bastian
.Cells(1, 3).FormulaR1C1 = "=IF(R[5]C[4]="""","""",""Ja"")"

AW: Formel per Makro in eine Zelle schreiben
27.06.2016 21:15:45
Bastian
Oder So ich denke das ist besser =)
.Cells(loLetzte, 3).FormulaLocal = "=Wenn(G8="""";"""";""Ja"")"
Gruß Basti

AW: Formel per Makro in eine Zelle schreiben
27.06.2016 21:29:39
Marco
Danke Basti aber ich erhalte einen Syntax error =(

AW: Formel per Makro in eine Zelle schreiben
27.06.2016 21:31:35
Marco
Wieso stehen bei dir vier """" anstatt zwei""? ist das wichtig Basti?

AW: Formel per Makro in eine Zelle schreiben
27.06.2016 21:53:46
Marco
Haha coole Sache danke Basti. Was bewirken die zusätzlichen Anführungszeichen? Eine Frage habe ich aber noch wenn ich sie hier stellen darf. Die Formel wird bei jedem neuen Eintrag in die nächste Zeile kopiert und vergleicht immer nur G8 obwohl sie in zeile 9 oder 10 usw geschrieben wird. also was ich meine wenn ich die formel per hand runterziehe passt sich das G8 an und erweitert sich zu G9 und G10... aber hier jetzt nicht. kann man das irgendwie machen?
.Cells(loLetzte, 3).Value = =WENN(G8="";"";"Ja")

Anzeige
AW: Formel per Makro in eine Zelle schreiben
27.06.2016 22:12:55
Bastian
Ja ich kann dir leider nicht sagen weshalb da 4 " hin kommen aber ich denke mal das liegt an der FormulaLocal das , diese Funktion die Bezeichnung benötigt . Aber da müsstest du dann die Profis Fragen =D
Ja um deine Formel herunter zuziehen brauchst du diese dann wohl doch =D
R =7 Row
C =6 Column
von der Zelle aus wo du es eingefügt hast
Also ich habe die Formel in Cells(1,1)=Range("A1") eingefügt also Cells(1+7,1+6) =Range("G8")
Cells(loLetzte, 3).FormulaR1C1 = "=IF(R[7]C[6]="""","""",""Ja"")"
Ich habe diese Formel noch nie benutzt =) aber das hört sich schon mal ganz gut an finde ich =D

Anzeige
AW: Formel per Makro in eine Zelle schreiben
27.06.2016 23:55:06
Marco
ich verstehe die formel nicht was macht die?

AW: Formel per Makro in eine Zelle schreiben
28.06.2016 07:59:26
baschti007
HEy Marco
Private Sub Speichern_Click()
Dim temp As Long
temp = MsgBox("Soll der neue Eintrag gespeichert werden?", vbYesNo)
If temp = vbYes Then
With Sheets("Tabelle1")
loLetzte = .Cells(Rows.Count, 1).End(xlUp).Row + 1
If loLetzte < 6 Then loLetzte = 6
'So sieht die Formel eigentlich aus ^^.
'.Cells(loLetzte, 3).FormulaLocal = "=WENN(UND(G8="""";J8="""";M8="""";P8="""";S8="""";  _
V8="""";Y8="""";AB8="""";AE8="""";AH8="""");"""";WENN(G8=""Nein"";""Nein"";WENN(J8=""Nein"";""Nein"";WENN(M8=""Nein"";""Nein"";WENN(P8=""Nein"";""Nein"";WENN(S8=""Nein"";""Nein"";WENN(V8=""Nein"";""Nein"";WENN(Y8=""Nein"";""Nein"";WENN(AB8=""Nein"";""Nein"";WENN(AE8=""Nein"";""Nein"";WENN(AH8=""Nein"";""Nein"";""Ja"")))))))))))"
.Cells(loLetzte, 3).FormulaR1C1 = _
"=IF(AND(R[2]C[4]="""",R[2]C[7]="""",R[2]C[10]="""",R[2]C[13]="""",R[2]C[16]="""",R[2]C[ _
19]="""",R[2]C[22]="""",R[2]C[25]="""",R[2]C[28]="""",R[2]C[31]=""""),"""",IF(R[2]C[4]=""Nein"",""Nein"",IF(R[2]C[7]=""Nein"",""Nein"",IF(R[2]C[10]=""Nein"",""Nein"",IF(R[2]C[13]=""Nein"",""Nein"",IF(R[2]C[16]=""Nein"",""Nein"",IF(R[2]C[19]=""Nein"",""Nein"",IF(R[2]C[22]=""Nein"",""Nein"",IF(R[2]C[25]=""Nein"",""Nein"",IF(R[2]C[28]=""Nein"",""Nein"",IF(R[2]C[31]=""Nein"",""Nein"",""Ja"")))))))))))"
.Cells(loLetzte, 5).Value = Date
'Unload Me
End With
End If
End Sub

Anzeige
AW: Formel per Makro in eine Zelle schreiben
28.06.2016 09:04:13
Marco
Morgen Baschti danke für deine Hilfe und Mühe. Deine Formel funktioniert echt super also sie zählt immer weiter, aber sie verzählt sich um 2 Zeilen. Wenn der Eintrag in Zeile 10 gemacht wird steht überall 12 da in Zeile 11 steht dann 13 da. Ist da irgendwo ein Sprung in der Formel drin das er zwei Zeilen weiter geht?
Grüße Marco

AW: Formel per Makro in eine Zelle schreiben
28.06.2016 09:19:17
Daniel
Hi
die Formel wird in R1C1-Addressierungsart in die Zelle geschrieben.
da wird eine Zelladresse in folgender Form in der Formel angegeben:
absolute Zelladresse: R Zeilennummer C Spaltennummer
also R1C1 entspricht $A$1 in A1-Adressierung
bei relativen Zelladressen siehts so aus: R [zeilenversatz] C [spaltenversatz]
das R[2] in den Zelladressen bedeutet, dass sich die Formel auf die Zeile zwei Zeilen unterhalb der Zelle mit der Formel bezieht.
wenn du einen Zellbezug auf die gleiche Zeile meinst, müsstest du R[0] schreiben.
0: Zellbezug auf gleiche Zeile
-1: Zellbezug auf erste Zeile oberhalb
1: Zellebezug auf erste Zeile unterhalb
für Spalten nach dem C analog.
bei Zellbezug auf die gleiche Zeile [0] darf man das [0] auch weglassen und schreibt einfach:
"=IF(AND(RC[4]="""",RC[7]="""",...
ich würde allerdins wenn möglich in R1C1 alle Zellbezüge die nicht zwingend relativ sein müssen auf absolut sezten. Die Formel wird dann kürzer und übersichtlicher:
.Cells(loLetzte, 3).FormulaR1C1 = "=IF(AND(RC7="""",RC10="""",RC13="""",...
Gruß Daniel

Anzeige
AW: Formel per Makro in eine Zelle schreiben
28.06.2016 09:11:03
Marco
Ich glaube ich habe es herausgefunden. Ich habe alle R[2] durch R[0] ersetzt. Jetzt steht überall 10 da wenn die Formel sich in der Zeile 10 befindet. Super danke an alle die mir geholfen haben =D

AW: Formel per Makro in eine Zelle schreiben
27.06.2016 22:24:29
Bastian
Oder sO
Sub test()
Columns("C:C").ClearContents
Start_Zeile = 8
Letzte_zeile = ActiveSheet.Cells(1048576, 7).End(xlUp).Row
For i = Start_Zeile To Letzte_zeile
If Cells(i, 7) = "" Then Cells(i, 3) = "" Else Cells(i, 3) = "Ja"
Next i
End Sub

https://www.herber.de/bbs/user/106578.xlsm

Anzeige
AW: Formel per Makro in eine Zelle schreiben
28.06.2016 00:05:07
Marco
Hm ich glaube das kann ich so nicht verwenden Basti. Ich hätte vielleicht das komplette Makro posten sollen. So sieht die Formel eigentlich aus. Das ist eine ganz einfache aber lange Wenn verschachtelung. Das Makro beginnt seine abfrage nach einer leeren Zeile in der Zeile 6. Wenn die zeile 8 frei ist soll in der Formel alles mit 8 drin stehen weil die abfrage der formel ja für diese Zeile wichtig ist. Ist die Zeile 14 z.b. frei und die formel wird da eingetragen sollte G14=""""....... usw. da stehen. aber das bekomme ich nicht hin. hm =/
Private Sub Speichern_Click()
Dim temp As Long
temp = MsgBox("Soll der neue Eintrag gespeichert werden?", vbYesNo)
If temp = vbYes Then
With Sheets("Database")
loLetzte = .Cells(Rows.Count, 1).End(xlUp).Row + 1
If loLetzte < 6 Then loLetzte = 6
'So sieht die Formel eigentlich aus ^^.
.Cells(loLetzte, 3).FormulaLocal = "=WENN(UND(G8="""";J8="""";M8="""";P8="""";S8=""""; _
V8="""";Y8="""";AB8="""";AE8="""";AH8="""");"""";WENN(G8=""Nein"";""Nein"";WENN(J8=""Nein"";""Nein"";WENN(M8=""Nein"";""Nein"";WENN(P8=""Nein"";""Nein"";WENN(S8=""Nein"";""Nein"";WENN(V8=""Nein"";""Nein"";WENN(Y8=""Nein"";""Nein"";WENN(AB8=""Nein"";""Nein"";WENN(AE8=""Nein"";""Nein"";WENN(AH8=""Nein"";""Nein"";""Ja"")))))))))))"
.Cells(loLetzte, 5).Value = Date
Unload Me
End With
End If
End Sub

Anzeige
AW: Formel per Makro in eine Zelle schreiben
27.06.2016 23:11:11
firmus
Hallo Marco,
das Spiel geht so:
mit jedem Abstraktionslevel muss wieder gesagt werden was du genau willst.
Jedes -"- besagt, dass danach Text kommt, und beendet wird dieser auf mit -"-.
Für eine Formel, die Du mit VBA erzeugst, wird VBA ein -"- wegnehmen und danach TEXT setzen, und eines am Ende wegnehmen (Begrenzung).
Wenn Du jetzt nur ein -"- angegeben hast, generiert Dir XLS eine Formel ohne -"-, weil das
Macro beim Einsetzen automatisch das erste -"- verwendet hat weil es damit feststellt (ab jetzt folgt Text).
Wenn Du jetzt in einer Formel, die mit VBA generiert wird, ein -"- stehen haben willst, must Du es zweimal schreiben (so -""-).
Damit nimmt VBA das erste -"- weg, und das zweite -"- wird in die Formel eingebaut.
Nachdem VBA an dieser Stelle dumm ist, würde es ein fehlendes -"- nicht bemerken, erst Deine Formel, wenn sie dann generiert ist, würde formal falsch sein (ein -"- würde fehlen.)
Schwindlig jetzt?
War ich anfangs auch - aber nach -""""- und -"""- legt sich das.
Gruß
Firmus

Anzeige
AW: Formel per Makro in eine Zelle schreiben
27.06.2016 23:56:16
Marco
ah super danke für die erklärung firmus =)

380 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige