Amatöörin ongelma on seuraavanlainen:
Olen tehnyt Select Case rakenteen. Tarkoituksenani on muuttaa sarakkeessa T olevat tekstit toisenlaisiksi sarakkeeseen U. Rivejä on useampi tuhat ja niissä olevat tekstit olisi määriteltävä yli 50 eri tavalla. Lähdin yrittämään tämän ratkaisua peräkkäisillä if-lauseilla, mutta kaavasta tuli liian pitkä ja excel alkoi hälyyttelemään.
Nyt olen saanut särvittyä kokoon moduuliin case-rungon, mutta en saa sitä täysin toimimaan. Koodillani ekat tekstit muuttuvat ihan oikein, eli solun T2 sisältämän tekstin perusteella lisätään teksti soluun U2, mutta en saa koodia jatkamaan automaattisesti seuraavaan riviin eli T3 ja U3.
Auttakaa! Miten saan ongelmani ratkaistua?
Onko tekemäni tapa edes toimiva kyseisessä tapauksessa?
Olisiko olemassa parempi/kevyempi tapa?
Ohessa koodini alku, sisältäen muutaman ekan casen (olen poistanut koodista kaikki yritykseni saada se etenemään seuraavaan riviin, koska en ole saanut koodia toimimaan yhtään. Tämä ohessa oleva sentään edes kääntyy ja "muuttaa" ekan solun.)
Sub tekstinmuutto()
Dim vanhaTeksti As String
Dim uusiTeksti As String
vanhaTeksti = Cells(2, 20).Value
Range("T2:U2").Select
With Selection. _
HorizontalAlignment = xlCenter
End With
Select Case vanhaTeksti
Case Is = "vanhaatekstiä1"
uusiTeksti = "uuttatekstiä1"
Cells(2, 21) = uusiTeksti
Case Is = "vanhaatekstiä2"
uusiTeksti = "uuttatekstiä2"
Cells(2, 21) = uusiTeksti
Case Is = "vanhaatekstiä3"
uusiTeksti = "uuttatekstiä3"
Cells(2, 21) = uusiTeksti
Case Is = "vanhaatekstiä4"
uusiTeksti = "uuttatekstiä4"
Cells(2, 21) = uusiTeksti
‘ ….jne loput caset samalla tavalla
’ ja loppuun
Case Else
uusiTeksti = "Virhe!"
Cells(2, 21) = uusiTeksti
End Select
End Sub
Kuinka saada case-toiminto toistumaan
3
167
Vastaukset 3
Sub koe()
Dim vika As Long
Dim solu As Range
Range("T2:U2").HorizontalAlignment = xlCenter
vika = Range("T65536").End(xlUp).Row
For Each solu In Range("T1:T" & vika)
Select Case solu
Case "vanhaatekstiä1"
solu.Offset(0, 1) = "uuttatekstiä1"
Case "vanhaatekstiä2"
solu.Offset(0, 1) = "uuttatekstiä2"
Case "vanhaatekstiä3"
solu.Offset(0, 1) = "uuttatekstiä3"
Case Else
solu.Offset(0, 1) = "Virhe!"
End Select
Next
End Sub- AhdistunutVBAnoob
Jees, toimii.
Kiitos oikein paljon kunde.
Tämä riittää jo hyvinkin, mutta lisäkysymyksenä voisin esittää, että:
millä komennolla excel vertaa tuosta vanhaatekstiä-solusta vai osaa tekstistä ja sen perusteella tekee saman toimenpiteen?
Eli jos solu sisältää vaikkapa tekstin "remontti reiska" niin millä saan excelin sijoittamaan vastaavaan uuttatekstiä-kenttään tekstin "kova sälli" vain esimerkiksi pelkän "reiska" sanan perusteella? AhdistunutVBAnoob kirjoitti:
Jees, toimii.
Kiitos oikein paljon kunde.
Tämä riittää jo hyvinkin, mutta lisäkysymyksenä voisin esittää, että:
millä komennolla excel vertaa tuosta vanhaatekstiä-solusta vai osaa tekstistä ja sen perusteella tekee saman toimenpiteen?
Eli jos solu sisältää vaikkapa tekstin "remontti reiska" niin millä saan excelin sijoittamaan vastaavaan uuttatekstiä-kenttään tekstin "kova sälli" vain esimerkiksi pelkän "reiska" sanan perusteella?Option Explicit
Sub koe()
Dim vika As Long
Dim solu As Range
Range("T2:U2").HorizontalAlignment = xlCenter
vika = Range("T65536").End(xlUp).Row
For Each solu In Range("T1:T" & vika)
Select Case True
Case solu Like "*reiska*"
solu.Offset(0, 1) = "kova sälli"
Case solu = "vanhaatekstiä2"
solu.Offset(0, 1) = "uuttatekstiä2"
Case solu = "vanhaatekstiä3"
solu.Offset(0, 1) = "uuttatekstiä3"
Case Else
solu.Offset(0, 1) = "Virhe!"
End Select
Next
End Sub
Keep EXCELing
@Kunde
Ketjusta on poistettu 0 sääntöjenvastaista viestiä.
Luetuimmat keskustelut
Kuinkahan monen
Naisen puolisoa olet nainen vikitellyt ja eron aiheuttanut? Toivottavasti karma on ku*sut muroihisi useamman kuin kerran99919Mies, kumman ottaisit mieluummin
176 cm vai 154 cm naisen, jos molemmat muuten yhtä viehättäviä? Mikä on oma pituutesi?150849- 64720
Pettymys TTK-parketilla! Anna Hanski tippui - Sami-opelta erikoinen heitto: "Nyt sä pääset..."
Toisena parina Tanssii Tähtien Kanssa -kisasta tippuivat Anna Hanski ja Sami Helenius. Pettymys oli käsinkosketeltava y26682Anteeksi mies
En jaksa tätä…, en halua, että sinulla on paha mieli tämän takia. Viestiä Sinulle.47674Tekisi mieli vetäistä kunnon jurrit sinun kanssasi
Ja keskustella asiat, ei tästä tule hevonvttua.46644- 47604
Poliisi etsii kadonnutta henkilöä Lapualla
Henkilö on kadonnut 18-19.9.2026 välisenä yönä. Henkilö on hoikka,n 185 cm pitkä. Kadonneella on ollut katoamishetkellä31562Oot komea
etkä näytä vanhenevan. Mieskarkki. Mä en yritä mitään, mä oon sulle liian vanha. Olis kuitenkin kiva tutustua suhun. n20533- 31531
Mieti oikeasti
Ollaan lähes tuntemattomia, mutta samalla on tämä erityinen vuosien tilanne takana, joka on ollut monella tapaa väärin.27526Venäjä häviämässä 30 vuoden sodan
Ukraina vapautti kolme aluetta, operaatio Vivaldi laajenee445511- 6496
Se oli molemminpuolinen limerenssi
Limerenssi myös sinulla kun näin pitkän ajan jälkeen päivystää palstaa. 🤭81489Olen nainen pahoillani, että tykkään sinusta niin paljon, että
Haluaisin panna sua. Tuntuu vaan siltä, että olet sen suhteen ihan haluton. Ei minulle riitä pelkkä ystävyyssuhde.31476- 44471
- 30456
- 41451
Rydman, herätys!
"Veikkauksen toimitusjohtaja Olli Sarekoski tienasi kiinteää palkkaa 445 891 euroa ja lisiä 72 157. Kuukausipalkka oli 364437En laita sulle viestiä
Toivottavasti ymmärrät jo mies hyvä, että en tule koskaan laittamaan sulle viestiä enkä soittamaan sulle. Minusta ei sii39424