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
94
Vastaukset
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
Miksei Björn Wahlroos jaa rahaa köyhille?
Esimerkiksi Nordean tiloissa? Vai tuovatko ne köyhät hiekkaa marmorilattioille ja siksi ei pysty mursunviiksi pystyyn k2424200Vassarit kummittelee pääni sisällä joulunakin
Hetki sitten alkoi punakapina. Joulupäivään mennessä ollaan jo Lindtmanin nuoruusvuosien näytelmäkerhossa. Tapaninpäivän402479Oho, köyhyys väheni Marinin hallituskaudella
👋💥🤕 Tuonkin Marinin hallitus sössi --- Vuosien 2019–2023 sosiaaliturva- ja verotusperusteiden muutokset suhteessa h562066Onko 65-vuotias liian vanha lähtemään rintamalle?
Suomessa reserviläisikä nousee ensi vuoden alusta 65 ikävuoteen. Jatkossa asevelvollinen kuuluu reserviin sen vuoden lop4952048Jouluksi miettimistä: kuka tai mikä valmistaa rahan?
Nyt kun on ollut vääntöä rahasta ja eritoten sen vähyydestä, niin olisi syytä uida rahan alkulähteille, eli mistä se syn431810Yksikään persu ei ole saanut Nobelin palkintoa
Kertoo paljon persujen älyn puutteesta. Demareista mm. Ahtisaari on kyseisen palkinnon saanut.941658Kylläpä asiat onkin nyt hyvin verrattuna Sannan aikaan
Sannan aikana aähkön alv oli 10%, nyt 25,5%. Ajatelkaa nytkin pörssisähkö on ilmaista, keskellä talvea! Bensan hinta on11533Kohuotsikoihin nousseet Aku Hirviniemi ja Mikko Leppilampi jouluna tv:ssä!
Täydellinen joulu -leffassa on iso kaarti suomalaisia näyttelijöitä. Mukana mm. Elena Leeve, Antti Luusuaniemi sekä koh251508Ex-Puoli seitsemän juontaja Anniina Valtonen yllättää - Uudessa roolissa tv:ssä!
Monen suosikki Anniina Valtonen tv:ssä! Valtonen on tuttu Ylen meteorologina, mutta hän juonsi myös Puoli seiskaa. Nyt A401227Mitä metsaman tuottaa
Törkypuhetta, ahdistusta, pahaa mieltä, riitaa, eripuraa, köyhien menestymättömien ja maattomien kurjien vähättelyä. Sit1211126