Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VBA: Miten tehdään suuri määrä vertailuja?

Jamro [28.03.2016 18:00:41]

#

Olisiko jollakin hyvää vinkkiä miten tehdään vertailu useamman Labelin ja ComboBoxin välillä. Vertailun pohjalta lasketaan Label4:n arvo?

Kokeilin alapuolen hässäkällä ja jos kaikki vaihtoehdot käy läpi niin homma ei näytä järkevältä, toivottavasti esimerkki selventää asiaa


esim.

If Label1>1(1 tai 0) And Label2>1(1 tai 0) And Label3>1(1 tai 0) And ComboBox1.Value=1(1..23) And ComboBox2.Value=1(1..23) Then
Label4= a*b
Elseif Label1>1(1 tai 0) And Label2=0(1 tai 0) And Label3>1(1 tai 0) And ComboBox1.Value=1..23 (1..23) And ComboBox2.Value=1..23(1..23) Then
Label4= a*b
jne.
Label1  1 1 1 0 0 1 0
Label2  1 1 0 0 1 0 1
Label3  1 0 0 1 1 1 0

ComboBox1 1....23
ComboBox2 1....23

Metabolix [28.03.2016 18:35:36]

#

Jos vaihtoehtoja on niin paljon, että erilliset if-lauseet eivät näytä hyvältä, voit laittaa vaihtoehdot ja toivotut tulokset taulukkoon ja käydä ne silmukassa läpi. Idea selvinnee alta:

Taulukko:
L1  L2  L3  C1  C2  Tulos
1   1   1   1   1   a*b
1   1   0   1   1   a*b*c
...

For i = 1 To N
  If Label1 = Taulukko(i, 1) And Label2 = Taulukko(i, 2) And ... Then
    Label4 = Taulukko(i, 6)
    Exit For
  End If
Next i

Toisaalta kannattaa myös miettiä, noudattavatko vaihtoehdot jotain loogista kaavaa, jolloin if-lauseita tulisi vähemmän. Esimerkiksi jos huomaat, että Label1=0 johtaa aina tulokseen Label4=a*b riippumatta muista arvoista, säästät saman tien vaikka kuinka monta if-lausetta.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta