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

162

    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. Missä kokoomuksen naiset?

      Hähmäistä ukkotarinaa kuultu koko viikonloppu. Kukaan ei ole kokoomuksessa edes yrittänyt pitää naisten puolta. Jopa
      Maailman menoa
      85
      3598
    2. Finland is now Petter place

      Audin B-ryhmän ralliautolla saatiin kansa voimaan hyvin. Kiitos kokoomus huumoripläjäyksestä.
      Maailman menoa
      29
      2373
    3. Ilman Stadia Suomessa ei olisi kunnon lihajalosteita

      HK, Helsingin makkaratehdas, Votkin, mitä näitä nyt onkaan. Böndellä ei ole kunnollisia jalostajia.
      Maailman menoa
      141
      2018
    4. Toivon että kuulut elämääni

      Mutta aika näyttää miten läheisesti. Lupaan kertoa jossain sivulauseessa, kun muutan paikkaa.
      Ikävä
      34
      871
    5. Mikä on kaunein

      Ja hellyttävin hetki irl kaivattusi kanssa?
      Ikävä
      44
      801
    6. En unohda sua

      En vaan unohda sua. Eikä se näköjään ole tarkoituskaan. Rakastan sua sitten omalla tavalla kauempaa kun mikään muu ei on
      Ikävä
      30
      790
    7. Mahdatko ymmärtää sitä

      Mä en selviä jollei me jutella kunnolla. Tarvitsen sua siihen. Etkä sä voi sitä tietää kun en ole ilmaissut mutta olen
      Ikävä
      60
      734
    8. Jorma Lind kuollut

      Ylen uutisankkurina 40 vuotta toiminut Jorma Lind on kuollut 85-vuotiaana. https://yle.fi/a/74-20230265 ARVl on näet
      Maailman menoa
      3
      726
    9. Kullan kemiallinen merkki on au

      Ei välttämättä. Mikä sun kullan merkki on?
      Ikävä
      40
      687
    10. Kyllä nainenkin voi ottaa yhteyttä

      Ja on ihan kiva jos ottaa yhteyttä mieheen. Minä ainakin olisin onnessani jos nainen ottaisi yhteyttä. mies
      Ikävä
      87
      676
    Aihe