Clever-Excel-Forum

Normale Version: Laufzeitfehler '1004': Probleme durch Eingabe von Zahlen in InputBox
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo!

Ich habe ein Makro (Schaltfläche Kest eintragen), wo ich durch InputBoxen Zahlen mit Komma eingebe. 
Bei der ersten InputBox gebe ich den Wert 1065,095 und bei der zweiten 600,61 ein.
Dann gebe ich das Datum z.B. 01.08.2023 ein.
Wenn ich dann auch OK klicke, kommt der Laufzeitfehler '1004' - Anwendungs- oder objektdefinierter Fehler.

Das Problem liegt glaube ich an der Eingabe von den Zahlen der Inputboxen. Eigentlich sollte er in der Spalt D die Zahl eintragen (mit dem € Format, was er leider nur ohne dem Format macht) und dann in der Zelle L22 eine weitere Zahl, was er gar nicht macht. Wichtig ist, dass bei L22 immer die vorhandene Formel bestehen bleibt und nur um meine Zahl inkl. "+" ergänzt wird.

Ich hoffe, dass mir jemand weiterhelfen kann.

LG
Thomas
Hi,

mach mal aus Formula FormulaLocal!
Hallo!

Danke sehr für den Hinweis. Jetzt kommt die Fehlermeldung nicht mehr und die Zahl wird korrekt in L22 ergänzt.
Leider habe ich aber noch immer das Problem, dass zwar in der Spalte D die Zahl eingetragen wird, aber mit einem gelben Rufzeichen (Die Zahl in dieser Zelle ist als Text formatiert oder es ist ein Apostroph vorangstellt).
Wie kann ich das Problem noch lösen?

LG
Thomas
Hi,

die Spalte D als Zahl formatieren!

Bei mir kommt keine Fehlermeldung.
Die Spalte D ist als Währung formatiert, trotzdem schreibt er mir neben der Zahl ein gelbes Rufzeichen hin.

Anbei nochmals mein aktueller Code:


Code:
Sub Kesteintragen()
stück = InputBox("Bitte die Stückanzahl von der Wertpapierabrechnung eintragen: ")
    If stück = "" Then
        Exit Sub
    End If
KestGesamt = InputBox("Bitte den gesamten Kestbetrag von der Wertpapierabrechnung eintragen: ")
    If KestGesamt = "" Then
        Exit Sub
    End If
KestThomasEinmalzahlung = Round((KestGesamt * 524) / stück, 2)
KestBirgitundThomas = Round((KestGesamt * 445) / stück, 2)
KestThomasAnspar = KestGesamt - KestThomasEinmalzahlung - KestBirgitundThomas
   
Buchungsdatum = InputBox("Bitte das Buchungsdatum vom Tagesgeldkonto eintragen: ")
        If Buchungsdatum = "" Then
            Exit Sub
        End If
   
    With Worksheets("Mappe1")
   
        .Cells(.Cells(.Rows.Count, 1).End(xlUp).Row + 1, 1).Formula = Buchungsdatum
        .Cells(.Cells(.Rows.Count, 1).End(xlUp).Row + 0, 2).Formula = "Kest insg."
        .Cells(.Cells(.Rows.Count, 1).End(xlUp).Row + 0, 4).Formula = KestGesamt
        .Range("L22").FormulaLocal! = .Range("L22").FormulaLocal! & "+" & KestThomasEinmalzahlung
   
    End With
End Sub
Moin!
Das ! hinter FormulaLocal ist natürlich nur ein Satzzeichen und hat im Code nix zu suchen! ← Satzzeichen Wink
Deklariere mal die Variablen!
Ich würde auch niemals die InputBox-Funktion, sondern die Application.InputBox-Methode nehmen und ihr gleich den richtigen Typ mitgeben.
Die Datei habe ich mir (noch) nicht angesehen.

Gruß Ralf
Hi,

außerdem braucht es nirgendwo eine Formel:

Code:
Sub Kesteintragen()

Dim KestGesamt, stück

stück = InputBox("Bitte die Stückanzahl von der Wertpapierabrechnung eintragen: ")
    If stück = "" Then Exit Sub
KestGesamt = InputBox("Bitte den gesamten Kestbetrag von der Wertpapierabrechnung eintragen: ")
    If KestGesamt = "" Then Exit Sub

KestThomasEinmalzahlung = CDbl(Round((KestGesamt * 524) / stück, 2))
KestBirgitundThomas = CDbl(Round((KestGesamt * 445) / stück, 2))
KestThomasAnspar = CDbl(KestGesamt - KestThomasEinmalzahlung - KestBirgitundThomas)
   
Buchungsdatum = InputBox("Bitte das Buchungsdatum vom Tagesgeldkonto eintragen: ")
        If Buchungsdatum = "" Then Exit Sub

   
    With Worksheets("Mappe1")
   
        .Cells(.Cells(.Rows.Count, 1).End(xlUp).Row + 1, 1) = Buchungsdatum
        .Cells(.Cells(.Rows.Count, 1).End(xlUp).Row + 0, 2) = "Kest insg."
        .Cells(.Cells(.Rows.Count, 1).End(xlUp).Row + 0, 4) = KestGesamt
        .Range("L22") = .Range("L22") + KestThomasEinmalzahlung
   
    End With
   
    Exit Sub

End Sub
Hallo!

Danke für eure Inputs. Ich habe es nun so gelöst, dass die Zahl in der Spalt D richtig als Zahl und nicht als Text eingetragen wird:

Code:
Sub Kesteintragen()

stück = InputBox("Bitte die Stückanzahl von der Wertpapierabrechnung eintragen: ")
    If stück = "" Then
        Exit Sub
    End If
KestGesamt = InputBox("Bitte den gesamten Kestbetrag von der Wertpapierabrechnung eintragen: ")
    If KestGesamt = "" Then
        Exit Sub
    End If

KestThomasEinmalzahlung = Round((KestGesamt * 524) / stück, 2)
KestBirgitundThomas = Round((KestGesamt * 445) / stück, 2)
KestThomasAnspar = KestGesamt - KestThomasEinmalzahlung - KestBirgitundThomas
   
Buchungsdatum = InputBox("Bitte das Buchungsdatum vom Tagesgeldkonto eintragen: ")
        If Buchungsdatum = "" Then
            Exit Sub
        End If
   
    With Worksheets("Mappe1")
   
        .Cells(.Cells(.Rows.Count, 1).End(xlUp).Row + 1, 1).Formula = Buchungsdatum
        .Cells(.Cells(.Rows.Count, 1).End(xlUp).Row + 0, 2).Formula = "Kest insg."
        .Cells(.Cells(.Rows.Count, 1).End(xlUp).Row + 0, 4).Formula = CDbl(KestGesamt)
        .Range("L22").FormulaLocal! = .Range("L22").FormulaLocal! & "+" & KestThomasEinmalzahlung
   
    End With

End Sub
Hi

und so funktioniert es?!
Hi,

ich hatte Dir einen überarbeiteten Code eingestellt, der nicht Deinen unsinnigen Formula-Ausdrücke enthält und noch ein paar Änderungen.