Fehlermeldung in VBA Code
#1
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
Top
#2
moin

was passiert denn wenn du Me. (Me & Punkt) weg lässt?

MfG Tom
Top
#3
gleiche Fehermeldung, er schreit gleich bei "IF"
Excel Version 2016
Top
#4
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
Top
#5
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
Top
#6
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
Top
#7
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
Top
#8
Danke sehr, funktioniert super.

LG
Thomas
Excel Version 2016
Top
#9
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
Top


Gehe zu:


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