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, 08:28
(Dieser Beitrag wurde zuletzt bearbeitet: 04.12.2017, 08: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, 08:40
(Dieser Beitrag wurde zuletzt bearbeitet: 04.12.2017, 08: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
|