EXCEL VBA Auswahl Kombinationsfeld gibt Preis in Textfeld aus

  • Excel

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von Cosmo_AC.

    EXCEL VBA Auswahl Kombinationsfeld gibt Preis in Textfeld aus

    Hallo zusammen,
    da ich mich in meiner Freizeit ein wenig weiter entwickeln möchte, habe ich mich mal mit VBA auseinandergesetzt.
    Nun arbeite ich auf einer Userform basierenden Rechnung.

    Mir fehlt es nun an Know-How zur Umsetzung.


    Folgendes, ich wähle in einer ComboBox eine Dienstleistung aus.
    Nach dieser Auswahl kann ich in der nächsten Combobox für diese Kategorie die entsprechende Dienstleistung auswählen.
    Funktioniert bis hier hin auch, nun habe ich in einer Tabelle diese Dienstleistungen angegeben die meine Comboboxen füttert.

    Mein Problem liegt jetzt darin, dass wenn ich eine Dienstleistung auswähle, in der darauf folgenden Textbox der Preis ausgegeben werden soll.
    Dieser ist ebenfalls in der Tabelle hinterlegt.

    Wähle ich nun in Combobox1 "Dienstl.1" aus, gibt mir Combobox2 die für diese Kategorie entsprechende Dienstleistungen aus.
    Jedoch, wenn ich nun meine Auswahl getroffen habe, müsste die Textbox nach diesem Eintrag in der Tabelle suchen und mir den entsprechenden Preis wiedergeben, hier verzweifele ich.

    Ich wäre sehr dankbar, wenn ich hier eine Hilfestellung bekommen würde, bisher kahm ich mit lesen sehr gut vorran, nur hierzu finde ich keinen Ausweg oder ich suche falsch :D
    So richtig schlau werde ich aus deinem Problem leider nicht. Wenn ich dich richtig verstehe, müsste doch der jeweilige Preis genau so ausgelsen werden wie auch schon die Dienstleistungen, oder nicht?

    Poste doch mal den relevanten Code-Teil.
    Besucht auch mein anderes Forum:
    Das Amateurfilm-Forum

    C-Quellcode

    1. Private Sub UserForm_Initialize()
    2. 'ComboBox Dienstleistung/Material füllen
    3. combo_pos1.RowSource = "=DIENSTLEISTUNGEN!A1:A10" '<-------------------------geht weiter bis Position 10!!!
    4. End Sub
    5. 'Comboboxen im Rechnungsmenu mit Inhalten aus Tabelle füllen <------------------------geht ebenfalls bis Position 10!!!
    6. 'Auffüllen Comboboxen Position 1
    7. Private Sub combo_pos1_Change()
    8. If combo_pos1.ListIndex >= 0 Then
    9. combo_pos1_beschreibung.RowSource = "=DIENSTLEISTUNGEN!A13:A19"
    10. End If
    11. If combo_pos1.ListIndex >= 1 Then
    12. combo_pos1_beschreibung.RowSource = "=DIENSTLEISTUNGEN!A22:A29"
    13. End If
    14. If combo_pos1.ListIndex >= 2 Then
    15. combo_pos1_beschreibung.RowSource = "=DIENSTLEISTUNGEN!A32:A39"
    16. End If
    17. End Sub
    18. Private Sub txt_anz_pos1_Change()
    19. On Error Resume Next
    20. txt_ges_preis_pos1.Value = txt_anz_pos1.Value * txt_ez_preis_pos1.Value
    21. End Sub
    22. Private Sub txt_ez_preis_pos1_Change()
    23. On Error Resume Next
    24. txt_ges_preis_pos1.Value = txt_anz_pos1.Value * txt_ez_preis_pos1.Value
    25. If combo_beschreibung_pos1.ListIndex >= 0 Then <----------------------------' Ab hier scheitert mein Vorgehen.
    26. End If
    27. End Sub


    "combo_pos1" gibt 3 Kategorien wieder, durch Auswahl gibt "combo_beschreibung_pos1" wiederrum die dazugehörigen Dienstleistungen aus.
    Nun soll "txt_ez_preis_pos1" den Preis der jeweiligen Dienstleistung ausgeben.

    Wäre dies nun für eine einzelne Kategorie, würde ich dies lösen können aber anscheinend habe ich ne kleine Denkblockade.
    Ich glaube, es fehlt noch folgende Information: Wo stehen die Preise?

    Oben schreibst du folgendes:
    wenn ich nun meine Auswahl getroffen habe, müsste die Textbox nach diesem Eintrag in der Tabelle suchen

    D. h. die Preise stehen nicht, wie auch die Dienstleistungen, in konkreten Zellen?

    Weil nach dem, was ich jetzt weiß, müsstest du doch die Preisermittlung nach combo_pos1_beschreibung_Change() machen und dann wieder sowas wie:

    Visual Basic-Quellcode

    1. If combo_pos1_beschreibung.ListIndex >= 0 Then
    2. txt_ez_preis_pos1.Text = Tabelle1.Cells(1, 1)
    3. End If

    Wobei man dann die Zellkoordinaten sicher über den ListIndex berechnen könnte, um nicht endlose If-Abfragen zu haben.
    Besucht auch mein anderes Forum:
    Das Amateurfilm-Forum
    HiHo,
    die Preise stehen in den Zellen B13:B19für Dienstl.1

    ums besser verständlich zu machen,
    combo_pos1 combo_beschreibung_pos1 txt_ez_preis_pos1
    Auswahl1 je nach Auswahl aus combo_pos1 ergibt den Preis der jeweiligen Auswahl aus der beschreibung
    Auswahl2 sind hier mehrere Dienstleistungen
    Auswahl3

    nun, da ich ja in der combo_pos1 3 Kategorien habe, welche in der combo_beschreibung_pos1 die anzubietenden Dienstleistungen anzeigt, welche mit mehreren Auswahlen belegt ist, frage ich mich, wie txt_ez_preis_pos1 den Preis ermitteln soll.
    Den jede Dienstleistung in den 3 Kategorien hat einen anderen Preis.
    So vielleicht (ungetestet)?

    Visual Basic-Quellcode

    1. Private Sub combo_pos1_beschreibung_Change()
    2. Dim OffSet As Integer
    3. select case combo_pos1.ListIndex
    4. case 0: offset = 13
    5. case 1: offset = 22
    6. case 2: offset = 32
    7. end select
    8. If combo_pos1.ListIndex >= 0 and combo_pos1_beschreibung.ListIndex >= 0 Then
    9. txt_ez_preis_pos1.Text = Tabelle1.Cells(OffSet+combo_pos1_beschreibung.ListIndex, 2) ' Hier bitte "Tabelle1" durch den Tabellennamen ersetzen!
    10. End If
    11. End Sub

    Geht davon aus, dass alle Preise in Spalte "B" stehen.

    Deine If-Anweisung in txt_ez_preis_pos1_Change muss dann natürlich raus.
    Besucht auch mein anderes Forum:
    Das Amateurfilm-Forum
    Ich muss das Thema nochmal aufgreifen nach langer Zeit.
    Bin damals beruflich ein wenig raus gekommen, deshalb gibt es nun einen Neustart ;)

    Eigentlich ist alles beim alten geblieben, was ich wohl geändert habe, in Spalte A sind die Dienstleistungen aufgeführt, werden auch sauber übernommen.
    Nun habe ich die Dienstleistungen im einzelnen zerlegt um eine saubere Tabellenstruktur zu bekommen.

    Wählt man nun also Aus DIENSTLEISTUNGEN" A1:A10" eine der leistungen aus, möchte ich das in "combo_pos1_beschreibung" die dazugehörigen Leistungen angezeigt werden.
    Diese befinden sich nun nicht mehr im Bereich "A13:A39" sondern gestaffellt in "B2:B10" oder auch "C2:C10"
    Wie realisiere ich nun die Umsetzung, wie alles in Spalte A lag, war es ja kein Problem, nun ändert diese sich aber.


    Danke schonmal für die Hilfe!