Registriert seit: 08.02.2017
Version(en): 2016
Hallo! Ich bekomme in einer Codezeile immer folgende Fehlermeldung: Fehler beim Kompilieren: Erwartet: Ausdruck Hier meine Codezeile: Code: Me.Cells(lr, 3).Value = IF(Me.Cells(lr, 50) - Me.Cells(lr - 1, 50)<0,format(abs(Me.Cells(lr, 50) - Me.Cells(lr - 1, 50), "-#,##0,00"),format(Me.Cells(lr, 50) - Me.Cells(lr - 1, 50), "+#,##0.00"))
Ich hoffe, dass mir jemand helfen kann.
Excel Version 2016
Registriert seit: 12.04.2014
Version(en): Office 365
moin
was passiert denn wenn du Me. (Me & Punkt) weg lässt?
MfG Tom
Registriert seit: 08.02.2017
Version(en): 2016
gleiche Fehermeldung, er schreit gleich bei "IF"
Excel Version 2016
Registriert seit: 08.02.2017
Version(en): 2016
04.12.2017, 09:28
(Dieser Beitrag wurde zuletzt bearbeitet: 04.12.2017, 09:29 von dertommy.)
anbei man ganzer Code, vielleicht hilft das mehr: Code: ' immmer mit Option explicit arbeiten ! ' nicht nur hinschreiben, sondern auch TUN! ''''''''''''''''''''''''''''''' Option Explicit '!!!!!!!!!!!!!!! '''''''''''''''''''''''''''''''
Private Sub Worksheet_Activate()
Dim lr As Long Dim i As Long Dim DifferenzletzteAktualisierungFonds1mitStichtag As String Dim DifferenzletzteAktualisierungFonds1seitAbschluss As String Dim DifferenzletzteAktualisierungFonds2mitStichtag As String Dim DifferenzletzteAktualisierungFonds2seitAbschluss As String Dim DifferenzletzteAktualisierungFonds3mitStichtag As String Dim DifferenzletzteAktualisierungFonds3seitAbschluss As String Dim DifferenzletzteAktualisierungFonds4mitStichtag As String Dim DifferenzletzteAktualisierungFonds4seitAbschluss As String Dim fehlendeMonate As Integer
lr = Me.Cells(Me.Rows.Count, 1).End(xlUp).Row
If Me.Cells(lr, 1) < Date And WorksheetFunction.CountIf(Me.Range("A:A"), DateSerial(Year(Date), Month(Date), 1)) = 0 Then fehlendeMonate = DateDiff("m", Me.Cells(lr, 1).Value, Date) For i = 1 To fehlendeMonate lr = lr + 1 Me.Cells(lr, 1).Value = DateSerial(Year(Date), Month(Date) - fehlendeMonate + i, 1) Me.Cells(lr, 50).Value = Worksheets("Comgest Growth Greater China").Range("H5").Value Me.Cells(lr, 3).Value = IF(Me.Cells(lr, 50) - Me.Cells(lr - 1, 50)<0,format(abs(Me.Cells(lr, 50) - Me.Cells(lr - 1, 50), "-#,##0,00"),format(Me.Cells(lr, 50) - Me.Cells(lr - 1, 50), "+#,##0.00")) Me.Cells(lr, 51).Value = Worksheets("Comgest Growth Greater China").Range("H6").Value Me.Cells(lr, 4).Value = Format(Worksheets("Comgest Growth Greater China").Range("H6").Value, "#,##0.00") & " % (" & Format(Me.Cells(lr, 51) - Me.Cells(lr - 1, 51), "#,##0.00") & " %)" Me.Cells(lr, 6).Value = Worksheets("Fidelity Funds Global Technol").Range("H5").Value Me.Cells(lr, 7).Value = Worksheets("Fidelity Funds Global Technol").Range("H6").Value Me.Cells(lr, 9).Value = Worksheets("Fidelity Funds Global (Anspar)").Range("H5").Value Me.Cells(lr, 10).Value = Worksheets("Fidelity Funds Global (Anspar)").Range("H6").Value Me.Cells(lr, 12).Value = Worksheets("Fidelity Funds China Consumer").Range("H5").Value Me.Cells(lr, 13).Value = Worksheets("Fidelity Funds China Consumer").Range("H6").Value With Worksheets("Fondsentwicklungen pro Monat") .Range("C2").Value = Me.Cells(lr, 50) - Me.Cells(lr - 1, 50) DifferenzletzteAktualisierungFonds1mitStichtag = .Range("C4").Value .Range("D2").Value = Me.Cells(lr, 51) - Me.Cells(lr - 1, 51) DifferenzletzteAktualisierungFonds1seitAbschluss = .Range("D4").Value .Range("F2").Value = Me.Cells(lr, 6) - Me.Cells(lr - 1, 6) DifferenzletzteAktualisierungFonds2mitStichtag = .Range("F4").Value .Range("G2").Value = Me.Cells(lr, 7) - Me.Cells(lr - 1, 7) DifferenzletzteAktualisierungFonds2seitAbschluss = .Range("G4").Value .Range("I2").Value = Me.Cells(lr, 9) - Me.Cells(lr - 1, 9) DifferenzletzteAktualisierungFonds3mitStichtag = .Range("I4").Value .Range("J2").Value = Me.Cells(lr, 10) - Me.Cells(lr - 1, 10) DifferenzletzteAktualisierungFonds3seitAbschluss = .Range("J4").Value .Range("L2").Value = Me.Cells(lr, 12) - Me.Cells(lr - 1, 12) DifferenzletzteAktualisierungFonds4mitStichtag = .Range("L4").Value .Range("M2").Value = Me.Cells(lr, 13) - Me.Cells(lr - 1, 13) DifferenzletzteAktualisierungFonds4seitAbschluss = .Range("M4").Value End With MsgBox "Die Fondsentwicklungensdaten wurden per " & Me.Cells(lr, 1) & " aktualisiert. " & String(1, vbNewLine) & _ "Daraus ergeben sich folgende neue Werte, verglichen mit der letzten Aktualisierung vom " & Me.Cells(lr - 1, 1) & ": " & String(2, vbNewLine) & _ "Comgest Growth Greater China:" & String(1, vbNewLine) & _ "---------------------------------" & String(2, vbNewLine) & _ "Prozentsatz mit Stichtag: " & Format(Me.Cells(lr, 50), "#,##0.00") & " % (" & DifferenzletzteAktualisierungFonds1mitStichtag & " %)" & String(1, vbNewLine) & _ "Prozentsatz seit Abschluss: " & Format(Me.Cells(lr, 51), "#,##0.00") & " % (" & DifferenzletzteAktualisierungFonds1seitAbschluss & " %)" & String(2, vbNewLine) & _ "Fidelity Funds Global Technol:" & String(1, vbNewLine) & _ "------------------------------" & String(2, vbNewLine) & _ "Prozentsatz mit Stichtag: " & Format(Me.Cells(lr, 6), "#,##0.00") & " % (" & DifferenzletzteAktualisierungFonds2mitStichtag & " %)" & String(1, vbNewLine) & _ "Prozentsatz seit Abschluss: " & Format(Me.Cells(lr, 7), "#,##0.00") & " % (" & DifferenzletzteAktualisierungFonds2seitAbschluss & " %)" & String(2, vbNewLine) & _ "Fidelity Funds Global (Anspar):" & String(1, vbNewLine) & _ "-------------------------------" & String(2, vbNewLine) & _ "Prozentsatz mit Stichtag: " & Format(Me.Cells(lr, 9), "#,##0.00") & " % (" & DifferenzletzteAktualisierungFonds3mitStichtag & " %)" & String(1, vbNewLine) & _ "Prozentsatz seit Abschluss: " & Format(Me.Cells(lr, 10), "#,##0.00") & " % (" & DifferenzletzteAktualisierungFonds3seitAbschluss & " %)" & String(2, vbNewLine) & _ "Fidelity Funds China Consumer:" & String(1, vbNewLine) & _ "--------------------------------" & String(2, vbNewLine) & _ "Prozentsatz mit Stichtag: " & Format(Me.Cells(lr, 12), "#,##0.00") & " % (" & DifferenzletzteAktualisierungFonds4mitStichtag & " %)" & String(1, vbNewLine) & _ "Prozentsatz seit Abschluss: " & Format(Me.Cells(lr, 13), "#,##0.00") & " % (" & DifferenzletzteAktualisierungFonds4seitAbschluss & " %)" & String(2, vbNewLine) Next i
End If aufräumen:
With Application .ScreenUpdating = True .EnableEvents = True End With
With Worksheets("Fondsentwicklungen pro Monat") .Activate .Cells(Rows.Count, 1).End(xlUp).Offset(1).Select End With
End Sub
Excel Version 2016
Registriert seit: 12.04.2014
Version(en): Office 365
Hallo
was hast du denn überhaupt vor?
willst du eine Formel in die Zelle schreiben?
dann doch eher auf diese Weise
Cells(lr,3).formula = "=If.....
oder
Cells(lr,3).FormulaLocal = "=Wenn....
MfG Tom
Registriert seit: 08.02.2017
Version(en): 2016
04.12.2017, 09:40
(Dieser Beitrag wurde zuletzt bearbeitet: 04.12.2017, 09:41 von dertommy.)
Ich will KEINE Formel in die Zelle schreiben, sondern nur das Ergebnis.
Das Ergebnis sollte wie folgt aussehen:
21,69 % (-0,21 %) oder 21,69 % (+0,21 %)
Excel Version 2016
Registriert seit: 12.04.2014
Version(en): Office 365
Hallo dann musst du erst das Ergebnis ausrechnen und danach das Ergebnis in die Zelle schreiben ich weiß nicht ob es so hinhaut aber schau halt mal was da als Ergebnis rauskommt das müsste dann irgendwie in deinen Code eingebaut werden Code: Sub test() Dim Ergebnis As Double If (Me.Cells(lr, 50) - Me.Cells(lr - 1, 50)) < 0 Then Ergebnis = Format(Abs(Me.Cells(lr, 50) - Me.Cells(lr - 1, 50)), "-#,##0,00") Else Ergebnis = Format(Me.Cells(lr, 50) - Me.Cells(lr - 1, 50), "+#,##0.00") End If Me.Cells(lr, 3).Value = Ergebnis End Sub
MfG Tom
Registriert seit: 08.02.2017
Version(en): 2016
Danke sehr, funktioniert super.
LG Thomas
Excel Version 2016
Registriert seit: 11.03.2015
Version(en): mittlerweile meistens 2019
Ergänzend noch zur ursprünglichen Codezeile. M.E. haben hier nur ein f und eine ) gefeht: Code: Me.Cells(lr, 3).Value = IFf(Me.Cells(lr, 50) - Me.Cells(lr - 1, 50) < 0, Format(Abs(Me.Cells(lr, 50) - Me.Cells(lr - 1, 50)), "-#,##0,00"), Format(Me.Cells(lr, 50) - Me.Cells(lr - 1, 50), "+#,##0.00"))
Gruß Michael
|