Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
24.04.2024 17:19:09
Anzeige
Archiv - Navigation
1636to1640
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Case Is Problem

Case Is Problem
14.08.2018 18:57:48
Fabian
Hallo zusammen,
ich habe folgendes Problem mit einem Case Is , welches eine Kombobox ausliest und den Inhalt mit einer tabelle vergleicht. Bei Übereinstimmung soll in einer weitern Spalte ein Wert in ein Textfeld übernommen werden.
txtrate ist allerding immer leer bzw. lngColumn übernimmt den Wert der Übereinstimmung nicht.
Gruß
Fab
  • 
    Private Sub cmdpricecalc_Click() 'Preisberechnung Luftfrachtrate*frachtpflichtiges Gewicht
    Dim lngColumn As Long
    Dim lngrate As Double
    Dim lngweight As Double
    With ThisWorkbook.Worksheets("Luftfrachtgewicht")
    Select Case cboAirlines
    Case Is = .Cells(1, 9)
    lngColumn = 1
    Case Is = .Cells(2, 9)
    lngColumn = 2
    Case Is = .Cells(3, 9)
    lngColumn = 3
    Case Is = .Cells(4, 9)
    lngColumn = 4
    Case Is = .Cells(5, 9)
    lngColumn = 5
    Case Is = .Cells(6, 9)
    lngColumn = 6
    Case Is = .Cells(7, 9)
    lngColumn = 7
    Case Is = .Cells(8, 9)
    lngColumn = 8
    Case Is = .Cells(9, 9)
    lngColumn = 9
    Case Is = .Cells(10, 9)
    lngColumn = 10
    End Select
    txtrate = .Cells(10, lngColumn)
    End With
    lngrate = CDbl(txtrate.Value)
    lngweight = CDbl(txtErgebnis.Value)
    txtprice = lngrate * lngweight
    End Sub
    

  • 3
    Beiträge zum Forumthread
    Beiträge zu diesem Forumthread

    Betreff
    Datum
    Anwender
    Anzeige
    AW: Case Is Problem
    14.08.2018 20:57:02
    Luschi
    Hallo Fabian,
    lt. Vba-Hilfe muß bei 'Select Case' ein elementarer Datentyp angegeben werden, Du verwendest aber ein Objekt (Combobox); deshalb so:
    Select Case cboAirlines.Value
    oder noch genauer:
    Select Case Me.cboAirlines.Value
    Da Me.cboAirlines.Value immer ein Textwert ist, muß eventuell hier noch eine Typumwandlung erfolgen, falls in der Zelle ein Zahlenwert steht:
    Select Case CDbl(Me.cboAirlines.Value)
    Select Case CInt(Me.cboAirlines.Value)
    oder so.
    Case Is = .Cells(1, 9) kann man auch so schreiben:
    Case .Cells(1, 9)
    oder besser:
    Case .Cells(1, 9).Value
    Gruß von Luschi
    aus klein-Paris
    Anzeige
    AW: Case Is Problem
    14.08.2018 21:17:20
    Matthias
    MOin!
    Der Fehler wird vermutlich im Format liegen. Deine Combo gibt dir einen String zurück. Wenn du in der Tabelle zahlen hast, ist der Vergleich immer falsch.
    Je nachdem welche Zahlen (ganze Zahlen, Dezimalzahlen etc.) du hast, ändere vorher den Ausdruck bspw.
    Select Case cdbl(cboAirlines)
    Und nimm immer einen case else mit auf. Dort eine MsgBox für Fehlermeldungen etc.
    VG
    AW: Case Is Problem
    14.08.2018 22:53:26
    Daniel
    HI
    das Problem wurde dir ja schon genannt.
    Select Case ist hier aber viel zu umständlich.
    das geht auch einfacher mit Application.Match (Vergleich in Excel)
    diese Programmzeile ersetzt dein ganzes Select Case
    lngColumn = Application.Match(cboAirlines.value, .Range("I1:I10"), 0)
    
    aber kann es sein, dass du in den Cells Zeilen mit Spalten verwechselst?
    du nennst die Variable lngColumn, ermittelst für sie aber eine Zeilennummer.
    Gruß Daniel
    Anzeige

    Links zu Excel-Dialogen

    Beliebteste Forumthreads (12 Monate)

    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige