Mit VBA Wenn Funktion in .Formular integrieren
#1
Hallo Zusammen,

per VBA definiere ich mit .Formula eine Formel. Ich würde da aber gerne noch eine Wenn-Funktion einbauen. Manuell klappt es aber mit .Formula nicht.


Mein Ziel ist es diesen funktionierenden Code

Code:
p_WorksheetZiel_ws.Cells(p_aktZeileNr_int + 1, kg_SpaltenNrErgMechB).Formula = "=IF(R" & p_aktZeileNr_int & "C20=" & """inclusive costs""" & ",PR_Uml_Satz
,0)"

In diesen hier zu integrieren
Code:
p_WorksheetZiel_ws.Cells(p_aktZeileNr_int + 1, kg_SpaltenNrErgMechB).Formula = "='" & .Name & "'!" & .Cells(kg_ZeilenNrStationHeader + 1, kg_SpaltenNrStationMechB).Address & "*(1+Stundenswitch*(StdSatzBüro-1))" & "*(1+Stundenswitch*switch*(Pr_Sum_Satz" & " + Pr_CE_UML" & " + IF(R" & p_aktZeileNr_int & "C20=" & """inclusive costs""" & ",PR_Uml_Satz,0)" & " + '" & .Name & "'!J15))"

Wie man dem Code entnehmen kann hab ich es versucht aber es klappt nicht. Es muss also an der Schreibweise liegen. Wenn ich die Wenn-Funktion manuell in die Zelle einfüge funktioniert es.

Danke euch
Top
#2
versuche es mit dem makrorekorder. 
Aufnahme starten 
in die Zelle worin die Formel steht doppelklicken und dann mit Enter wieder raus.
Aufnahme beenden und im  Editor schauen was der Rekorder aufgenommen hat.  

Sieht aber nach fehlenden Anführungstrichen aus.
Top
#3
(18.08.2020, 22:39)ralf_b schrieb: Sieht aber nach fehlenden Anführungstrichen aus.

Moin!
Yepp!
Aus diesem Grund schlummert eine UDF in meiner Personal.xlsb
Function FormulaToString(rng As Range) As String
If rng.CountLarge > 1 Then
    FormulaToString = CVErr(xlErrValue)
    Exit Function
ElseIf IsEmpty(rng) Then
    FormulaToString = vbNullString
    Exit Function
End If
FormulaToString = """" & Replace(rng.FormulaR1C1, """", """""") & """"
End Function

Ergibt:
BC
14Zeile: 14, Spalte: 2"=""Zeile: ""&ROW()&"", Spalte: ""&COLUMN()"

ZelleFormel
B14="Zeile: "&ZEILE()&", Spalte: "&SPALTE()
C14=FormulaToString(B14)

Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Top
#4
Hallo Ralf,

Wo fehlen Anführungszeichen?

danke für den Tipp das habe ich gemacht.

Code:
ActiveCell.FormulaR1C1 = _

        "='Neues Stationsblatt 2'!R30C11*(1+Stundenswitch*(StdSatzBüro_2021-1))*(1+Stundenswitch*switch*(PR_Sum_Satz_Jahr2 + PR_CE_Umlage_Jahr2" & "+IF(Ergebnisübersicht!R[503]C[19]=""inclusive TEF1-L costs"", Uml_Satz,0)" & " + 'Neues Stationsblatt 2'!R[13]C[9]))"
Habe den IF-Anteil getrennt um zu testen ob es klappt. Hier im Makrorekorder klappt es.

Aber sobald ich irgendeinen IF-Anteil in diesen Code hier integriere funktioniert es nicht, auch nicht mit der vereinfachten IF-Version:

Code:
p_WorksheetZiel_ws.Cells(p_aktZeileNr_int + 1, kg_SpaltenNrErgMechB).Formula = "='" & .Name & "'!" & .Cells(kg_ZeilenNrStationHeader + 1, kg_SpaltenNrStationMechB).Address & "*(1+Stundenswitch*(StdSatzBüro-1))" & "*(1+Stundenswitch*switch*(Pr_Sum_Satz" & " + Pr_CE_UML" & "+IF(Ergebnisübersicht!R[503]C[19]=""inclusive TEF1-L costs"", Uml_Satz,0)" & " + '" & .Name & "'!J15))"
Top
#5
Hallo,

benutze die A1-Schreibweise beim IF oder

FormulaR1C1 = ... kg_SpaltenNrStationMechB).Address(ReferenceStyle:=xlR1C1) ...

Gruß Uwe
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste