Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

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
Antworten Top
#2
moin

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

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

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


Gehe zu:


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