Vba

taas pulassa

Tein koodin pätkän, joka vertaa samalla rivillä olevia numeroita yhteen lukuun. Jos jokin luku on yhtä suuri kuin verrattava luku, suorittaa excel tietyn toiminnon.

Nyt kun rivejä exceliin tulee ainakin 30, niin miten saisin kätevästi tämän toiminnon kaikille riveille, niin ettei minun tarvitse kirjoittaa jos-lauseketta joka rivistä erikseen Vba:han?

7

453

    Vastaukset

    Anonyymi (Kirjaudu / Rekisteröidy)
    5000
    • hiukan ylimalkainen kyssäri , mutta rivit joilla vastine on saat kätevästi allaolevalla koodilla(vanha postaus tänne ). Siinä sitten vaan tsekkaat rivitiedon ja suoritat tarvittavan makron(ilmeisesti sama kaikilla?)

      moduuliin...

      Option Explicit

      Sub Siirrä()
      Dim Löydetty As Range
      Dim solu As Range
      Dim haku As Variant
      On Error Resume Next
      Application.ScreenUpdating = False
      Worksheets("Sheet1").Activate
      haku = 1
      Set Löydetty = EtsiJaSiirrä(haku, Rows("1:30"))
      For Each solu In Löydetty
      'tähän makrotestaus soluosoitteen mukaan(rivi) ...
      MsgBox solu.Row
      Next
      Range("A1").Select
      Application.ScreenUpdating = True
      End Sub


      Function EtsiJaSiirrä(Hakuehto As Variant, HakuAlue As Range) As Range
      Dim solu As Range
      Dim EkaOsoite As String

      With HakuAlue
      Set solu = .Find( _
      What:=Hakuehto, _
      LookIn:=xlValues, _
      LookAt:=xlWhole, _
      SearchOrder:=xlByRows, _
      SearchDirection:=xlNext, _
      MatchCase:=False, _
      SearchFormat:=False)
      If Not solu Is Nothing Then
      Set EtsiJaSiirrä = solu
      EkaOsoite = solu.Address
      Do
      Set EtsiJaSiirrä = Union(EtsiJaSiirrä, solu)
      Set solu = .FindNext(solu)
      Loop While Not solu Is Nothing And solu.Address EkaOsoite
      End If
      End With
      End Function

      • taas pulassa

        Sorry, selitin huonosti.

        Eli otetaan esimerkki, jossa A1=1, B1=2 ja C1=3.
        Jos A1 tai B1 olisi 3, tulisi ruutuun varoitusteksti. Tämän osaan tehdä.

        Eli soluja A ja B verrataan aina soluun C, joka rivillä solut A, B ja C saavat eri arvot.

        Miten siis saan n. 30:lle riville kopioitua tämän toiminnon? kun ei viitsisi kirjoittaa 30 if lausetta, toisin sanoen 30 makroa.


      • taas pulassa kirjoitti:

        Sorry, selitin huonosti.

        Eli otetaan esimerkki, jossa A1=1, B1=2 ja C1=3.
        Jos A1 tai B1 olisi 3, tulisi ruutuun varoitusteksti. Tämän osaan tehdä.

        Eli soluja A ja B verrataan aina soluun C, joka rivillä solut A, B ja C saavat eri arvot.

        Miten siis saan n. 30:lle riville kopioitua tämän toiminnon? kun ei viitsisi kirjoittaa 30 if lausetta, toisin sanoen 30 makroa.

        eli onko tarkoitus tarkistella sarakkeisiin A tai B syötettäviä arvoja ja verrata saman rivin C sarakkeen arvoon ja jos A:han tai B:hen syötettävä arvo on saman rivin C sarakkeen solussa niin varoitus?
        Jos näin niin vaihtoehtoja on...
        mutta odotellaan tarkennusta ennen kuin vastataan


      • taas pulassa
        kunde kirjoitti:

        eli onko tarkoitus tarkistella sarakkeisiin A tai B syötettäviä arvoja ja verrata saman rivin C sarakkeen arvoon ja jos A:han tai B:hen syötettävä arvo on saman rivin C sarakkeen solussa niin varoitus?
        Jos näin niin vaihtoehtoja on...
        mutta odotellaan tarkennusta ennen kuin vastataan

        Juurikin tuosta on kysymys. Msgbox hypähtää silmille, jos joku arvoista on sama, mutta miten tämän saa toimimaan rivikohtaisesti, niin ettei minun tarvitse kirjoittaa if-lauseketta joka rivistä erikseen?


      • taas pulassa kirjoitti:

        Juurikin tuosta on kysymys. Msgbox hypähtää silmille, jos joku arvoista on sama, mutta miten tämän saa toimimaan rivikohtaisesti, niin ettei minun tarvitse kirjoittaa if-lauseketta joka rivistä erikseen?

        ko. TAULUKON moduuliin...

        Private Sub Worksheet_Change(ByVal Target As Range)
        If Not Intersect(Target, Columns("A:A")) Is Nothing Then
        If Target = Target.Offset(0, 2) Then
        MsgBox "Arvo ei kelvollinen!", vbInformation
        Target = ""
        Target.Select
        End If
        End If
        If Not Intersect(Target, Columns("B:B")) Is Nothing Then
        If Target = Target.Offset(0, 1) Then
        MsgBox "Arvo ei kelvollinen!", vbInformation
        Target = ""
        Target.Select
        End If
        End If
        End Sub

        Keep Excelling
        @Kunde


      • taas pulassa
        kunde kirjoitti:

        ko. TAULUKON moduuliin...

        Private Sub Worksheet_Change(ByVal Target As Range)
        If Not Intersect(Target, Columns("A:A")) Is Nothing Then
        If Target = Target.Offset(0, 2) Then
        MsgBox "Arvo ei kelvollinen!", vbInformation
        Target = ""
        Target.Select
        End If
        End If
        If Not Intersect(Target, Columns("B:B")) Is Nothing Then
        If Target = Target.Offset(0, 1) Then
        MsgBox "Arvo ei kelvollinen!", vbInformation
        Target = ""
        Target.Select
        End If
        End If
        End Sub

        Keep Excelling
        @Kunde

        Mitä nuo Offset arvot tarkoittavat? (0,2) ja (0,1)?


      • taas pulassa kirjoitti:

        Mitä nuo Offset arvot tarkoittavat? (0,2) ja (0,1)?

        If Target = Target.Offset(0, 2)

        eli kun joku solu muuttuu taulukossa(=Target , tossa koodissani) niin aluksi siinä oli testaus onko kyseessä A sarakkeen solu, joka muuttuu ja jos oli, niin sitten verrataan sitä saman rivin C sarakkeen soluun
        Target.Offset(0, 2) eli siirtymä 0 =sama rivi ja 2 =2 saraketta oikealle
        rivit menee alaspäin ja - ylöspäin vastaavasti sarakkeet oikealle ja -vasemmalle.

        elikä koodi aktivoituu kun taulukossa joku arvo muuttuu
        ekaksi testataan oliko A sarakkeen solu ja jos oli niin onko arvo sama kuin C sarakkeessa ja jos oli niin ilmoitus
        jälkimmäinen osa vastaavasti B sarakkeen soluille

        Keep Excelling
        @Kunde


    Ketjusta on poistettu 0 sääntöjenvastaista viestiä.

    Luetuimmat keskustelut

    1. Persujen mukaan rasismi on huumoria

      Vaan kun koomikko kutsui Halla-ahoa fasistiksi, niin piti haastaa oikeuteen. Mihin se huumorinitaju yhtäkkiä hävisi? ⠀
      Maailman menoa
      272
      6688
    2. Rasismia kaikkialla näkevät ovat Suomen tyhmimpiä ihmisiä

      ja monillahan kuluu myös mielialalääkkeitä, eli päässä on ongelmia. Mutta he eivät tajua kuinka paljon ja ihan todellis
      Maailman menoa
      234
      6258
    3. Ei kahta sanaa etteikö Petteri Orpo hyväksy rasismia

      Koska jatkaa hallituksessa rasistisen perussuomalaisiksi itseään kutsuvan puolueen kanssa. Se on Petteri Orpon arvomaai
      Maailman menoa
      42
      5662
    4. Mitkäs nuorisoporukat ovat toisia nuoria ryöstelleet (selvää rassismia)

      No poliisi kertoo, että maahanmuuttajataustaisia ovat, ja isot porukat sillä yhden suomalaisen uhrin kimpussa on ollut j
      Maailman menoa
      155
      4991
    5. Pitkän linjan yritysjohtaja: Suomen tapahtumat eivät ole Aasian kärkiuutinen

      Viimeaikaista kohua on käytetty sisäpoliittisena lyömäaseena, Thomas Zilliacus sanoo. – Koska asiaa kuitenkin kommentoi
      Maailman menoa
      32
      3806
    6. Hallitus on kaadettava ja Orpon on erottava

      Mikään muu hallitus ei ole oman elämäni aikana tuhonnut näin paljon tämän maan taloutta ja työllisyyttä sekä suomen main
      Maailman menoa
      195
      3729
    7. Lasse Lehtonen vaatii persuja pyytämään anteeksi aasialaisilta

      Persut ova romahduttaneet Suomen maakuvan parissa päivässä negatiiviseksi rasismillaan ja se alkaa vaikuttamaan jo Suome
      Maailman menoa
      132
      3457
    8. HS 12/25 kysely: persut romahti, demarit raketoi

      Kyyti on kylmää persuleirissä, saattaa vetää siellä silmätkin viirulleen. Sen sijaan SDP:n puoluetoimistolla voidaan pok
      Maailman menoa
      37
      3151
    9. Demarit ovat oikeasti törppöjä eli heikkoälyisiä

      ja todistavat sitä päivittäin täällä lapsellisilla jutuillaan. Kauheasti on hehkuttaneet kuinka demarien kannatus vaan
      Maailman menoa
      4
      3150
    10. Rasismi rapauttaa Suomen mainetta ja hallituksen hiljaisuus pahentaa vahinkoa

      Finnairin viesti Japanista on pysäyttävä: suomalaisen politiikan rasismikohut heijastuvat suoraan matkustuspäätöksiin ja
      Maailman menoa
      333
      2799
    Aihe