|
Ein Versuch:
Option Explicit
'
' Dieses Modul setzt voraus:
' - Eine Combobox mit Namen "Combobox"
' * mit 3 Spalten wie das Blatt mit # Lebensmittel # Kcal/g # Eiweiß/g #
' * Rowsource in Spalten A2:C(beliebiglang)
' * und ColumnHeads = True
' - Eine Textbox namens "txtGramm", in der die gewünschten Gramm eingegeben werden können.
' - Zwei Textboxen "txtKcal" und "txtEiweiß", in denen das Ergebnis dargestellt wird.
'
' Bei Änderungen in der ComboBox bzw. der txtGramm wird die Berechnung ausgeführt.
'
' Die Fehlerbehandlung reagiert auf eine Löschung der Zahl in txtGramm und setz dort
' eine direkt überschreibbare "0" ein.
'
' Buttons sind nicht implementiert.
Private Sub ComboBox_Change()
Call Berechnen
End Sub
Private Sub txtGramm_Change()
Call Berechnen
End Sub
Private Sub Berechnen()
Dim lngIndex As Long
Dim txtLebensmittel As String
Dim lngLetzteZeile As Long
' Letzte Zeile bestimmen.
lngLetzteZeile = Cells(Rows.Count, 1).End(xlUp).Row
' ComboBox auslesen.
txtLebensmittel = Cells(ComboBox.ListIndex + 2, 1)
On Error GoTo ZahlReset
Me.txtEiweiß = Me.txtGramm.Value * Application.VLookup(txtLebensmittel, Range("A2:C" & lngLetzteZeile), 3, False)
Me.txtKcal = Me.txtGramm.Value * Application.VLookup(txtLebensmittel, Range("A2:C" & lngLetzteZeile), 2, False)
On Error GoTo 0
Exit Sub
ZahlReset:
Me.txtGramm.Value = 0
Me.txtGramm.SelStart = 0
Me.txtGramm.SelLength = Len(Me.txtGramm)
Resume
End Sub
|