Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

exel vba - porównywanie wartości ComboBox'ów

muchajarek 23 Kwi 2010 08:22 1595 3
  • #1 23 Kwi 2010 08:22
    muchajarek
    Poziom 10  

    Witam. Podpowiedzcie mi Koledzy co robię źle.
    mam 3 comboboxy w które wpisuje wartosci liczbowe, lub są puste.
    Jednak combobox2 lub combobox3 nie może mieć wartości większej od combobox1
    Wymyśliłem coś takiego:

    Code:
    If ComboBox1.Value < ComboBox2.Value Or ComboBox1.Value < ComboBox3.Value Then
    
    MsgBox "ZMIEŃ ILOŚĆ GODZIN", 64, "Za dużo godzin U lub N"
    Else
    ........
    End If



    Wszystko działa dopóki liczby w combobox'ach mają tyle samo cyfr. Jeśli jednak w combobox1 liczba ma 2 cyfry a w pozostałych 1 cyfrę wyskakuje MsgBox

    0 3
  • #2 23 Kwi 2010 08:29
    adwia
    Poziom 12  

    Należaloby się jeszcze upewnić, czy wpisane wielkości to liczby a nie teksty (1234 w sczególności też może być tekstem)

    0
  • #3 23 Kwi 2010 09:04
    muchajarek
    Poziom 10  

    wartości są brane z listy rozwijanej, a do list rozwijanych wprowadzane sa z tabeli exel przy użyciu:

    Code:
    Me.ComboBox1.RowSource = Range(Cells(5, 3), Cells(16, 3)).Address   'ilosc godzin pracy
    
    Me.ComboBox2.RowSource = Range(Cells(4, 3), Cells(a, 3)).Address    'ilosc godzin uciazliwych
    Me.ComboBox3.RowSource = Range(Cells(4, 3), Cells(a, 3)).Address    'ilosc godzin niebezp.


    wartości w tabeli sa wartościami liczbowymi.
    poza tym, sytuacja się powtarza gdy wartość do Combobox'ów wpisuje ręcznie z klawiatury.
    jak to sprawdzić czy są to liczby a nie tekst ?
    lub co zrobić, żeby wartość Combobox,a była na pewno liczbą ?

    0
  • Pomocny post
    #4 23 Kwi 2010 10:19
    arnoldziq
    Moderator Programowanie

    muchajarek napisał:
    Wszystko działa dopóki liczby w combobox'ach mają tyle samo cyfr.

    To powinno Ci dać do myślenia.
    ComboBox-y przechowują poszczególne pozycje jako ... ciąg znaków, a nie wartości liczbowe.
    W swoim kodzie, zamień wartość Value, z wszystkich trzech Combo na liczbę i porównaj wtedy.
    Np. tak :
    Code:
    If Val(ComboBox1.Value) < Val(ComboBox2.Value) Or Val(ComboBox1.Value) < Val(ComboBox3.Value) Then
    
    MsgBox "ZMIEŃ ILOŚĆ GODZIN", 64, "Za dużo godzin U lub N"
    Else
    ........
    End If

    0