Hallo!
Die VB-Profis werden sich krümmen vor Lachen…aber ich stehe bei einem sehr einfachen Programm,welches ich in VBA(mit dem VBA-Editor in Excel)zu schreiben versuche schon vor einem für mich unlösbaren Problem.
Ich habe versucht ein Programm für die Berechnung von Treibstoffkosten auf 100KM selbst zu schreiben.Das Programm soll die Eingabe der gefahrenen KM verlangen,dann die Eingabe der verbrauchten Liter.Wenn der Treibstoffverbrauch in Liter berechnet wurde,kommt die Frage ob man nun auch die Kosten berechnen möchte.Man steht vor der Option JA,NEIN,ABBRUCH.Soweit bin ich schon.Habe einen "Do while-Loop"programmiert,um bei fehlender Eingabe die Vorherige MsgBox wieder aufzurufen.Soweit so gut.
Nun zu meinen Fragen: was muss ich programmieren(Wortlaut und an welcher Stelle),damit ich NUR Zahlen,aber nicht 0 oder Buchstaben eingeben kann?
Frage 2: Wie muss ich vorgehen,damit ich beim Betätigen der "Abbruch-Schaltfläche"immer zum Beginn des Progs zurückgelange?(Abbruch funktioniert nicht,erst ab „Willst du auch noch die Kosten berechnen?“ funktionierts wieder.Vorher nicht-hängt das mit dem Loop zusammen?).
Frage 3: Welche Befehle sind nötig, um alle Ergebnisse auf 3 Kommastellen gerundet zu bekommen?
Bitte dringend um Rat!Bei Bedarf könnte ich den bisher geschriebenen Code per e-mail schicken!
Bin euch ewig dankbar! LG Hankey
Hallo LG Hankey,
zur Frage 3 habe ich ein Beispiel für Dich.
Sub Runden()
Dim x
x = Round(Zahl, 3) 'Wert in Variable Runden
Cells(1, 2) = Round(Cells(1, 1), 3) 'Wert in Zelle „A1“ nach „A2“ Runden
End Sub
Die Fragen 1 und 2 sind für mich zu unpräzise.
Ein Tipp: Erstelle doch ein kleines Beispiel-Makro, welches Dein Problem beschreibt und füge es Deiner Beschreibung zu.
Gruß
Markus
Hallo LG Hankey,
bei meiner ersten Antwort habe ich die Deklaration der Konstanten „Zahl“ vergessen.
Const Zahl = 10.24567
Sub Runden()
Dim x
x = Round(Zahl, 3) 'Wert in Variable Runden
Cells(1, 2) = Round(Cells(1, 1), 3) 'Wert in Zelle „A1“ nach „A2“ Runden
End Sub
Hallo LG Hankey,
mit diesem Beispiel solltest Du Frage 1 und 2 lösen können.
Sub Zahl_Eingeben()
Dim Preis As Double
Dim Antwort As Integer
Dim km As Double
Start:
On Error GoTo Fehler 'wenn km ein falscher Datentyp zugewiesen wird
km = InputBox("Fahrstrecke in [km]: ") 'Ein Type kann nur bei Application.InputBox angegeben werden
On Error GoTo 0
Do While Preis = 0 'Schleife solange x=0
Application.DisplayAlerts = False 'keine Warnmeldung anzeigen
Preis = Application.InputBox("Euro pro Liter: ", „Benzinkosten“, 1.029, Type:=1) 'Type:=1 -> nur Zahlen erlaubt
Application.DisplayAlerts = True 'Warnmeldung anzeigen
If Preis = 0 Then
Antwort = MsgBox(„Es muss eine Zahl größer 0 eingegeben werden.“, vbOKCancel)
If Antwort = vbCancel Then GoTo Start
End If
Loop
Cells(1, 1) = Round(Preis, 3) 'Eingabe in die Zelle „A1“ und Runden
Exit Sub
Fehler:
MsgBox („Es muss eine Zahl eingegeben werden.“)
Resume
End Sub
Gruß
Markus
Vielen Dank!
Hallo Markus!
Vielen Dank, dass du dir die Mühe gemacht hast!
Werde das Ganze gleich morgen mal ausprobieren!
LG Hankey
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]