Terve,
Mikähän tässä on vikana? Hinnastosta pitäisi kopioida hinnat tuotetaulukkoon. Nyt makro sujahtaa läpi, mutta ei tee mitään. Ilman tuota If-lausetta toimii, eli iffittelyssä jokin vika?
Sub hinnoita()
Dim laskuri As Long
Dim apuri As Long
laskuri = 1
apuri = 2
Do While laskuri < 42520
laskuri = laskuri 1
If Worksheets("Hinnat").Cells(laskuri, 1).Value = Worksheets("Tuotteet").Cells(apuri, 2).Value Then
Worksheets("Tuotteet").Cells(apuri, 10).Value = Worksheets("Hinnat").Cells(laskuri, 8).Value
Worksheets("Tuotteet").Cells(apuri, 11).Value = Worksheets("Hinnat").Cells(laskuri, 9).Value
apuri = apuri 1
End If
Loop
End Sub
Mikähän tässä on vikana? Hinnastosta pitäisi kopioida hinnat tuotetaulukkoon. Nyt makro sujahtaa läpi, mutta ei tee mitään. Ilman tuota If-lausetta toimii, eli iffittelyssä jokin vika?
Sub hinnoita()
Dim laskuri As Long
Dim apuri As Long
laskuri = 1
apuri = 2
Do While laskuri < 42520
laskuri = laskuri 1
If Worksheets("Hinnat").Cells(laskuri, 1).Value = Worksheets("Tuotteet").Cells(apuri, 2).Value Then
Worksheets("Tuotteet").Cells(apuri, 10).Value = Worksheets("Hinnat").Cells(laskuri, 8).Value
Worksheets("Tuotteet").Cells(apuri, 11).Value = Worksheets("Hinnat").Cells(laskuri, 9).Value
apuri = apuri 1
End If
Loop
End Sub
Vastaukset 1
Vanhimmat
Sun tapauksessasi kannattaisi varmaan käyttää Tuotteet-taulukossa PHAKU-funktiota. Sen kun tekisi juuri tuon vaaditun homman.
Mutta jos haluat tuolla tapaa makrolla tehdä, niin sitten tarvitset _periaatteessa_ kaksi sisäkkäistä silmukkaa, joista ulompi kasvattaa laskuri-muuttujaa ja sisempi apuri-muuttujaa. Sitten kun vastaavuus löytyy niin tiedot kopioidaan, apuri-muuttuja nollataan ja sisemmästä silmukasta poistutaan.
Jos vastaavuutta ei löydy, niin sisemmän silmukan muuttuja nollataan myös. Sun koodissasi voi käydä esim niin, että jos Tuotteet-taulukon toinen rivi ei täsmää minkään Hinnat-taulukon rivin kanssa, niin makro sujahtaa läpi yrittämättä edes etsiä vastaavuutta Tuotteet-taulukon kolmannelle riville.
- Mika