Kuinka saada case-toiminto toistumaan

AhdistunutVBAnoob

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

3

156

    Vastaukset

    Anonyymi (Kirjaudu / Rekisteröidy)
    5000
    • 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

    1. Joensuun kaupunki levittelee tonttitietoja Keskisuomalaiselle

      Sähköposteja ja tonttitietoja levitellään mm. Pasi Koivumaalle
      Joensuu
      15
      2151
    2. Oletko nainen alkanut kammoamaan minua

      Sinua ei näy eikä kuulu, ja ilmeisesti kiertelet tilanteita. Oletko huomannut, että olet vieläkin ajatuksissani luvattom
      Ikävä
      63
      1465
    3. Saako 60 v vielä töitä? Arto Nyberg puhuu suoraan elämästä ilman töitä

      Arto Nyberg täyttää tänään 60 v. Onnea! Nyberg totuttiin näkemään suoran haastatteluohjelman kapteenina vuodesta toise
      Maailman menoa
      106
      1439
    4. Tiesitkö tätä ex-miehistä? Noriko Salo jysäytti yllätyspaljastuksen

      Noriko Salo ja ex-F1 kuski Mika Salo olivat naimisissa v. 1999-2022. Kirsi Salon ex-mies puolestaan on muusikko Sammy A
      Kotimaiset julkkisjuorut
      6
      1302
    5. Toivoisitko Rakas vielä?

      Haluaisitko vielä? Uskoisin osaavani näyttää sinulle, kuinka ainutlaatuinen nainen olet.
      Ikävä
      68
      1275
    6. Keskustelua kasteesta

      You tubessa kaksi pappia keskustelivat kasteesta ja kritisoivat raamatullista uskovien kastetta. Toinen heistä yritti
      Kaste
      400
      1184
    7. Huh, huh! Sofia Belorf ei ole itse pessyt hiuksiaan kolmeen vuoteen

      Sofia Belorf elää ökyelämää Dubaissa. Sofian arjessa kulta, raha ja luksus ovat vahvasti läsnä. Luksuselämään tottuneell
      Kotimaiset julkkisjuorut
      73
      1124
    8. Ihan pieni näkeminen vaan

      👋 ja minä olisin valmis jo vaikka mihin sun kanssa. Nämä on näitä.. 🤫🫣😘💥
      Ikävä
      31
      1067
    9. Kuka? Riehui valtuuston kokouksessa tänään ?

      Onko puolangan puolesta porukkaa. Vaikuttaa siltä. Sairasta.
      Puolanka
      30
      1059
    10. En haluaisi kaiken kuihtuvan pois

      ilman, että olemme voineet jutella rauhassa kasvotusten... Mutta mistä ihmeestä löydän sinut?
      Ikävä
      52
      1046
    Aihe