Zum Inhalt springen

VBA Excel Hilfe bei der Erstellung eines Kalorienverbrauchsrechners gesucht


Empfohlene Beiträge

Geschrieben (bearbeitet)

Hallo,

ich möchte mit VBA einen Kalorienverbrauchsrechner erstellen.

Leider sind dort einige Fehler da es nicht funktioniert, könntet ihr mir bitte Tipps geben, woran es liegen könnte?

als 1. wird gnach den Daten gefragt, also welches Geschlecht, Größe, Alter usw.

2. hier soll es an bestimmte bedingungen geknüpft werden, also der Durchschnittsmensch ist ja keine 3 m groß... :) deswegen sollte eigentlich dann das Programm abrechen wenn man merkwürdige Zahlen eingibt... mein Problem macht es aber nicht...

3. hier ist die eigentliche Berechnung des Grundumsatzes, die führt er aber nicht aus, warum nicht?

4. da ja der Mensch sich auch bewegt kommt ja noch die körperliche Aktivität hinzu, d.h. die Formel würde dann noch später mit einem wert multipliziert werden

bspw.

keine Bewegung (×1), ausschließlich sitzend/liegend (×1.2),... , körperlich anstrengende Arbeit (×2.2) -> insgesamt 6 Werte... wie kann ich diese dann noch einfügen?

so sieht bisher mein Versuch aus:


Sub kalorienverbrauch()


Dim groesse As Single

Dim gewicht As Single

Dim alter As Single

Dim geschlecht As Variant

Dim kalorienumsatzfrauen As Single

Dim kalorienumsatzmaenner As Single



geschlecht = InputBox(" Bitte gib dein Geschlecht ein, wenn du weiblich bist ein m und wenn du männlich bist dann ein w", "Eingabefeld", " w für weiblich, m für männlich") [COLOR="Cyan"]kann man hier es ´sich nicht irgendwie einfacher machen?[/COLOR]

groesse = InputBox("Bitte gib deine Groesse in m ein", "Eingabefeld", "Deine Eingabe")

alter = InputBox("Bitte gib dein Alter ein", "Eingabefeld", "Deine Eingabe")

gewicht = InputBox("Und jetzt gib dein Gewicht ein", "Eingabefeld", "Deine Eingabe")


  If (groesse < 1.5) Then

        strText = " wichtig !!!"

        MsgBox ("Bitte eine Größe über 1,50m angeben")

    End If



    If (groesse > 2.5) Then

        MsgBox ("Bitte eine Größe unter 2,50m angeben")

    End If




 If (gewicht < 45 And gewicht) Then

        MsgBox ("Bitte ein Gewicht über 45kg angeben")

    End If

    If (gewicht > 200) Then

        MsgBox ("Bitte ein Gewicht unter 200kg angeben")

    End If


If (geschlecht = w) Then

kalorienumsatzfrauen = 655.1 + 9.6 * gewicht + 1.8 * groesse - 4.7 * alter


ElseIf (geschlecht = m) Then


kalorienumsatzmaenner = 66.47 + 13.7 * gewicht + 5 * groesse - 6.8 * alter


End If


End Sub

Ich hoffe es war verständlich geschrieben (denn es ist meine erste Frage) und ich würde mich über jede leicht verständliche Hilfe freuen

Bearbeitet von grueni
Geschrieben
Hallo,

Guten Tag

2. hier soll es an bestimmte bedingungen geknüpft werden, also der Durchschnittsmensch ist ja keine 3 m groß... :) deswegen sollte eigentlich dann das Programm abrechen wenn man merkwürdige Zahlen eingibt... mein Problem macht es aber nicht...

Du hast keine Programmabbruchbedingungen in deinem Quelltext. D.h. die "IF Größe < 1.5"-Abfrage ist zwar "wahr", aber dann wird das Programm weiter sequentiell abgearbeitet.

Du könntest bspw. folgendes einbauen


If (groesse < 1.5) Then

        strText = " wichtig !!!"

        MsgBox ("Bitte eine Größe über 1,50m angeben")

        Exit Sub

End If

3. hier ist die eigentliche Berechnung des Grundumsatzes, die führt er aber nicht aus, warum nicht?
Weil du in deiner IF-Abfrage auf Gleichheit zweier Variablen überprüfst (ist die Variable Geschlecht gleich dem Inhalt der Variable m bzw. w). Die Zeichen m und w müssen in Hochkommata.

If (geschlecht = "w") Then

...

Bei den Berechnungen würde ich dir empfehlen entsprechende Klammern zu setzen.

Geschrieben
geschlecht = InputBox(" Bitte gib dein Geschlecht ein, wenn du weiblich bist ein m und wenn du männlich bist dann ein w", "Eingabefeld", " w für weiblich, m für männlich") kann man hier es ´sich nicht irgendwie einfacher machen?

Der Kommentar "kann man hier .." muß mit Hochkomma eingeleitet werden und außerdem ist die Inputbox falsch herum fomuliert.

Warum benutzt du ein Variant für das Geschlecht?

Geschrieben (bearbeitet)

Hallo,

erstmal vielen lieben Dank für die schnellen Antworten, wusste gar nicht das das so schnell geht :)

also ich nutze variant, weil bei single macht er das nicht

und variant da nimmt er doch alles, hab ich jedenfalls so verstanden...

gibt es denn eine bessere Möglichkeit?

ich würds ja auch besser finden wenn es zum beispiel schon vorgegeben wäre, weiß aber leider nicht wie man das macht...

also ein feld, indem man es auswählt ob derjenige männlich oder weiblich ist...

wie macht man denn das mit dem letzten Punkt, also das man verschiedene körperliche Aktivitäten auswählt?

es gibt ja 6 Möglichkeiten von nixtun :) bis harte körperliche Arbeit :(

wie kann ich dies in die Formel mit einbauen? weil das muss ja auch beachtet werden... man hat ja nicht nur den Grundumsatz ...

*dann könnte man nix mehr essen*

also, das man nicht jedesmal nochmal die formel ändert... sondern das gleich in einer formel rüberbringt

Bearbeitet von sunny1989
Geschrieben

Sub allgemeinerkalorienverbrauch()

Dim groesse As Currency

Dim gewicht As Currency

Dim alter As Integer

Dim geschlecht As Variant

Dim kalorienumsatzfrauen As Currency

Dim kalorienumsatzmaenner As Currency

Dim koerperlicheaktivi As Integer

geschlecht = InputBox(" Bitte gib dein Geschlecht ein: " & vbCr & "w für weiblich" & vbCr & "m für männlich", "Eingabefeld", " w für weiblich, m für männlich")

groesse = InputBox("Bitte gib deine Groesse in m ein", "Eingabefeld", "Deine Eingabe")

alter = InputBox("Bitte gib dein Alter ein", "Eingabefeld", "Deine Eingabe")

gewicht = InputBox("Und jetzt gib dein Gewicht ein", "Eingabefeld", "Deine Eingabe")

koerperlicheaktivi = InputBox(" Bitte gib jetzt den Grad deiner körperlichen Aktivität ein: " & vbCr & "1 = keine Bewegung" & vbCr & "2 = ausschließlich sitzend/liegend" & vbCr & "3 = sitzend, kaum körperliche Aktivität" & vbCr & "4 = sitzend, zeitweilig gehend/ stehend" & vbCr & "5 = überwiegend stehend/gehend" & vbCr & "6 = körperlich anstrengende Arbeit ", "Eingabefeld", "deine Zahl")

If (groesse < 1.5) Then

strText = " wichtig !!!"

MsgBox ("Bitte eine Größe über 1,50m angeben")

Exit Sub

End If

If (groesse > 2.5) Then

MsgBox ("Bitte eine Größe unter 2,50m angeben")

Exit Sub

End If

If (gewicht < 45) Then

MsgBox ("Bitte ein Gewicht über 45kg angeben")

Exit Sub

End If

If (gewicht > 200) Then

MsgBox ("Bitte ein Gewicht unter 200kg angeben")

Exit Sub

End If

If koerperlicheaktivi < 1 Then

strText = " wichtig !!!"

MsgBox ("Bitte eine Zahl zwischen 1-6 angeben")

Exit Sub

End If

If koerperlicheaktivi > 6 Then

strText = " wichtig !!!"

MsgBox ("Bitte eine Zahl zwischen 1-6 angeben")

Exit Sub

End If

If geschlecht = "w" And koerperlicheaktivi = 1 Then

kalorienumsatzfrauen = (655.1 + (9.6 * gewicht) + (1.8 * groesse) - (4.7 * alter)) * 1

MsgBox ("Ihr Kalorienbedarf beträgt: " & kalorienumsatzfrauen)

Exit Sub

ElseIf geschlecht = "w" And koerperlicheaktivi = 2 Then

kalorienumsatzfrauen = (655.1 + (9.6 * gewicht) + (1.8 * groesse) - (4.7 * alter)) * 1.2

MsgBox ("Ihr Kalorienbedarf beträgt: " & kalorienumsatzfrauen)

Exit Sub

ElseIf geschlecht = "w" And koerperlicheaktivi = 3 Then

kalorienumsatzfrauen = (655.1 + (9.6 * gewicht) + (1.8 * groesse) - (4.7 * alter)) * 1.45

MsgBox ("Ihr Kalorienbedarf beträgt: " & kalorienumsatzfrauen)

Exit Sub

ElseIf geschlecht = "w" And koerperlicheaktivi = 4 Then

kalorienumsatzfrauen = (655.1 + (9.6 * gewicht) + (1.8 * groesse) - (4.7 * alter)) * 1.65

MsgBox ("Ihr Kalorienbedarf beträgt: " & kalorienumsatzfrauen)

Exit Sub

ElseIf geschlecht = "w" And koerperlicheaktivi = 5 Then

kalorienumsatzfrauen = (655.1 + (9.6 * gewicht) + (1.8 * groesse) - (4.7 * alter)) * 1.85

MsgBox ("Ihr Kalorienbedarf beträgt: " & kalorienumsatzfrauen)

Exit Sub

ElseIf geschlecht = "w" And koerperlicheaktivi = 6 Then

kalorienumsatzfrauen = (655.1 + (9.6 * gewicht) + (1.8 * groesse) - (4.7 * alter)) * 2.2

MsgBox ("Ihr Kalorienbedarf beträgt: " & kalorienumsatzfrauen)

Exit Sub

ElseIf geschlecht = "m" And koerperlicheaktivi = 1 Then

kalorienumsatzmaenner = (66.47 + (13.7 * gewicht) + (5 * groesse) - (6.8 * alter)) * 1

MsgBox ("Ihr Kalorienbedarf beträgt: " & kalorienumsatzmaenner)

Exit Sub

ElseIf geschlecht = "m" And koerperlicheaktivi = 2 Then

kalorienumsatzmaenner = (66.47 + (13.7 * gewicht) + (5 * groesse) - (6.8 * alter)) * 1.2

MsgBox ("Ihr Kalorienbedarf beträgt: " & kalorienumsatzmaenner)

Exit Sub

ElseIf geschlecht = "m" And koerperlicheaktivi = 3 Then

kalorienumsatzmaenner = (66.47 + (13.7 * gewicht) + (5 * groesse) - (6.8 * alter)) * 1.45

MsgBox ("Ihr Kalorienbedarf beträgt: " & kalorienumsatzmaenner)

Exit Sub

ElseIf geschlecht = "m" And koerperlicheaktivi = 4 Then

kalorienumsatzmaenner = (66.47 + (13.7 * gewicht) + (5 * groesse) - (6.8 * alter)) * 1.65

MsgBox ("Ihr Kalorienbedarf beträgt: " & kalorienumsatzmaenner)

Exit Sub

ElseIf geschlecht = "m" And koerperlicheaktivi = 5 Then

kalorienumsatzmaenner = (66.47 + (13.7 * gewicht) + (5 * groesse) - (6.8 * alter)) * 1.85

MsgBox ("Ihr Kalorienbedarf beträgt: " & kalorienumsatzmaenner)

Exit Sub

ElseIf geschlecht = "m" And koerperlicheaktivi = 6 Then

kalorienumsatzmaenner = (66.47 + (13.7 * gewicht) + (5 * groesse) - (6.8 * alter)) * 2.2

MsgBox ("Ihr Kalorienbedarf beträgt: " & kalorienumsatzmaenner)

Exit Sub

End If

End Sub

Geschrieben (bearbeitet)

Wenn du die gesamte Berechnung als VBA im Excel machst, warum benutzt du dann die Inputboxen, statt den Anwender die notwendigen Eingaben im Sheet erfassen zu lassen wobei dann auch die Auswahl über Auswahllisten einfacher wäre?

strText = " wichtig !!!"

Ausrufezeichen, noch dazu mehrfache, in Hinweisen interpretiere ich alles Anbrüllen des Anwenders.

Überlege mal selber, wie du reagieren würdest, wenn dich ein Bankmitarbeiter anbrüllt, weil du die Überweisung falsch ausgefüllt hast.

Bearbeitet von MartinSt

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...