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.

Laufzeitfehler '1004': Probleme durch Eingabe von Zahlen in InputBox
#1
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


Angehängte Dateien
.xlsm   Mappe1.xlsm (Größe: 36,13 KB / Downloads: 4)
Excel Version 2016
Antworten Top
#2
Hi,

mach mal aus Formula FormulaLocal!
Gruß

Edgar

Meine Antworten sind freiwillig und ohne Gewähr!
Über Rückmeldungen würde ich mich freuen.
Antworten Top
#3
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
Excel Version 2016
Antworten Top
#4
Hi,

die Spalte D als Zahl formatieren!

Bei mir kommt keine Fehlermeldung.
Gruß

Edgar

Meine Antworten sind freiwillig und ohne Gewähr!
Über Rückmeldungen würde ich mich freuen.
Antworten Top
#5
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
Excel Version 2016
Antworten Top
#6
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
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Antworten Top
#7
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
Gruß

Edgar

Meine Antworten sind freiwillig und ohne Gewähr!
Über Rückmeldungen würde ich mich freuen.
Antworten Top
#8
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
Excel Version 2016
Antworten Top
#9
Hi

und so funktioniert es?!
Antworten Top
#10
Hi,

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

Edgar

Meine Antworten sind freiwillig und ohne Gewähr!
Über Rückmeldungen würde ich mich freuen.
Antworten Top


Gehe zu:


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