VBA ongelma

VBAntero

Haluan valita aktiiviselta sheetiltä solun A1.
Käsky
Cells(1,1).select
antaa virheilmoituksen "Select method of Range class failed". Mikä tässä voisi olla vikana?

6

322

    Vastaukset

    Anonyymi (Kirjaudu / Rekisteröidy)
    5000
    • VBAntero

      Edellinen käsky makrossa aktivoi halutun sheetin, ja siihen asti kaikki toimii hienosti, eli kyseinen sheet aktivoituu. Mutta sitten tuon Cells(1,1).Select -käskyn kohdalla saan virheilmoituksen. Sama juttu jos koitan laittaa tilalle Range("A1").Select -käskyn. Oikeinkirjoitus on tarkistettu moneen kertaan. Manuaalisesti solun A1 valitseminen kyllä onnistuu ihan normaalisti, jos kuittaan VBA-virheilmoituksen end-painikkeella.

      • viittaisi siihen, että taulukko ei ole aktiivinen
        tai taulukko on suojattu
        tai solu lukittu.
        Voisiko olla yhdistetty solu?
        välttämättä koodissa ei tartte valita eikä aktivoida mitään jos tehdään esi. laskutoimituksia yms. soluille tai solualueelle
        Mikä on edellinen koodi makrossa , joka aktivoi taulukon.?
        Toimiiko ko. makro jossain toisessa työkirjassa - avaa uusi työkirja ja kokeile koodia.

        Kyllä toi koodisi pitäisi toimia...
        kokeile seuraavia variaatioita

        Sheets("Sheet1"). Activate
        Range("A1").Select

        tai
        Sheets("Sheet1"). Activate
        Sheets("Sheet1").Range("A1").Select

        tai
        Application.GoTo Sheets("Sheet1").Range("A1")

        toimiiko noilla?


      • ...
        kunde kirjoitti:

        viittaisi siihen, että taulukko ei ole aktiivinen
        tai taulukko on suojattu
        tai solu lukittu.
        Voisiko olla yhdistetty solu?
        välttämättä koodissa ei tartte valita eikä aktivoida mitään jos tehdään esi. laskutoimituksia yms. soluille tai solualueelle
        Mikä on edellinen koodi makrossa , joka aktivoi taulukon.?
        Toimiiko ko. makro jossain toisessa työkirjassa - avaa uusi työkirja ja kokeile koodia.

        Kyllä toi koodisi pitäisi toimia...
        kokeile seuraavia variaatioita

        Sheets("Sheet1"). Activate
        Range("A1").Select

        tai
        Sheets("Sheet1"). Activate
        Sheets("Sheet1").Range("A1").Select

        tai
        Application.GoTo Sheets("Sheet1").Range("A1")

        toimiiko noilla?

        Tuo Application.GoTo Sheets("Sheet1").Range("A1") toimi.

        Miksi .select ei tässä yhteydessä toimi, sitä en kyllä vieläkään ymmärrä. Taulukko oli aktiivinen, ei suojattu, ei lukittu, ja kyseessä ei ollut yhdistetty solu. Mutta samapa tuo.

        Solun valintaa käytin siksi, että saisin siihen liitettyä siihen toisesta workbookista kopioidun rivin, enkä ole yleensä saanut pastea toimimaan muuten kuin valinnan kautta. Miten se onnistuisi? Ei ainakaan näin:

        wb1.sheets(1).rows(1).copy
        wb2.sheets(1).rows(1).paste

        eikä näin:

        wb1.sheets(1).rows(1).copy
        wb2.sheets(1).cells(1,1).paste

        normaalisti tekisin näin, tällä kertaa vaan ei toiminut:

        wb1.sheets(1).rows(1).copy
        wb2.sheets(1).activate
        cells(1,1).select '(tähän tökkäsi)
        application.paste


      • ... kirjoitti:

        Tuo Application.GoTo Sheets("Sheet1").Range("A1") toimi.

        Miksi .select ei tässä yhteydessä toimi, sitä en kyllä vieläkään ymmärrä. Taulukko oli aktiivinen, ei suojattu, ei lukittu, ja kyseessä ei ollut yhdistetty solu. Mutta samapa tuo.

        Solun valintaa käytin siksi, että saisin siihen liitettyä siihen toisesta workbookista kopioidun rivin, enkä ole yleensä saanut pastea toimimaan muuten kuin valinnan kautta. Miten se onnistuisi? Ei ainakaan näin:

        wb1.sheets(1).rows(1).copy
        wb2.sheets(1).rows(1).paste

        eikä näin:

        wb1.sheets(1).rows(1).copy
        wb2.sheets(1).cells(1,1).paste

        normaalisti tekisin näin, tällä kertaa vaan ei toiminut:

        wb1.sheets(1).rows(1).copy
        wb2.sheets(1).activate
        cells(1,1).select '(tähän tökkäsi)
        application.paste

        Sub KopioiToisestaToiseen()
        Workbooks("Koe1").Worksheets("Sheet1").Range("A1").Copy Workbooks("Koe2").Worksheets("Sheet1").Range("A1")
        End Sub

        Keep Excelling ;-)
        @Kunde


      • ...
        kunde kirjoitti:

        Sub KopioiToisestaToiseen()
        Workbooks("Koe1").Worksheets("Sheet1").Range("A1").Copy Workbooks("Koe2").Worksheets("Sheet1").Range("A1")
        End Sub

        Keep Excelling ;-)
        @Kunde

        Eikö tuosta puutu jotain, eihän Workbooks("Koe2").Worksheets("Sheet1").Range("A1") kai yksinään mitään tee..? Ja tuo kopioi vain yhden solun, se kyllä onnistuu yleensä pelkällä paste-komennolla, mutta rivin tai muun usean solun alueen liittämistä en ole saanut toimimaan muuta kuin valitsemalla ensin yhden solun (ja sitten paste erikseen).

        Anyhow, nyt törmäsin sitten toiseen ongelmaan. Koodi
        wb1.Sheets("testi").Activate
        testVar = Cells(1, 1).Value

        antaa testVar -muuttujan arvoksi työkirjan wb1 ensimmäisen sheetin (joka ei suinkaan ole "testi") solun A1 arvon, eikä "test"-sheetin solun A1 arvoa. Vaikka ensimmäisen käskyn jälkeen tuo "testi" onkin aktiivisena. Tämä varmaan liittyy tuohon edelliseen ongelmaan, koska sama sheet on kyseessä. Ei ymmärrä...


      • ... kirjoitti:

        Eikö tuosta puutu jotain, eihän Workbooks("Koe2").Worksheets("Sheet1").Range("A1") kai yksinään mitään tee..? Ja tuo kopioi vain yhden solun, se kyllä onnistuu yleensä pelkällä paste-komennolla, mutta rivin tai muun usean solun alueen liittämistä en ole saanut toimimaan muuta kuin valitsemalla ensin yhden solun (ja sitten paste erikseen).

        Anyhow, nyt törmäsin sitten toiseen ongelmaan. Koodi
        wb1.Sheets("testi").Activate
        testVar = Cells(1, 1).Value

        antaa testVar -muuttujan arvoksi työkirjan wb1 ensimmäisen sheetin (joka ei suinkaan ole "testi") solun A1 arvon, eikä "test"-sheetin solun A1 arvoa. Vaikka ensimmäisen käskyn jälkeen tuo "testi" onkin aktiivisena. Tämä varmaan liittyy tuohon edelliseen ongelmaan, koska sama sheet on kyseessä. Ei ymmärrä...

        luulin, että osaat soveltaa...
        koodi pitää olla samalla rivillä, nyt heittää se n tässä 2 riville...

        Sub KopioiToisestaToiseen()
        Workbooks("Koe1").Worksheets("Sheet1").Range("A1").EntireRow.Copy Workbooks("Koe2").Worksheets("Sheet1").Range("A1")
        End Sub


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

    Luetuimmat keskustelut

    1. Miksi persuilla ei ole firmoja?

      Kuten vasemmisstolaisilla, esim. Sannalla MA\PI. Eikö ole aika erikoista?
      Maailman menoa
      84
      7132
    2. Persut hommasivat Suomeen 35 000 pientä lasta v. 2015

      Onko Riikka Purra nyt tavoittelemassa tätä samaa historiallista persujen utopiaa? Purram kaksinaamaisessa pelissä vaadit
      Maailman menoa
      27
      7079
    3. Purran tuhoja tuskin saadaan koskaan korjatuksikaan

      Purra on aiheuttanut Suomen taloudelle karmaisevat tuhot. Sen lisäksi Purra on ajanut myös suuren osan Suomen kansasta k
      Maailman menoa
      117
      6205
    4. Persujen kaksoisstandardit: Räsäsen uhkailu paha, Virran uhkailu hyvä

      Tässä taas nähdään kuinka kaksinaamaista porukkaa persut ovat. Mitäs persut tähän?
      Maailman menoa
      45
      5414
    5. Miksette persut irtisanoudu Kirkin lausunnoista?

      Kirkhän muun muassa vaati raiskattuja naisia pidättäytymään abortista ja vaimoja alistumaan aviomiestensä tahtoon. Mik
      Maailman menoa
      84
      5248
    6. Demarikultin uhri kertoo

      Demarikultin uhri kertoo: “En saanut mennä edes suihkuun ilman lupaa” – Seksuaalisen hyväksikäytön uhri kertoo vuosistaa
      Maailman menoa
      63
      5225
    7. Miksi vasemmistolaiset eivät omista yhtään firmaa?

      Vasemmistolaiset eivät omista yhtään firmaa joka työllistäisi ihmisiä. Miksi? No siksi, että jos vasemmistolainen perus
      Maailman menoa
      41
      5120
    8. Sanna valittiin Euroopan huonoimmaksi pääministeriksi

      Sannan kaudella Suomi oli ainut maa missä bkt laski. Kannattaa huomata, että luvut valitsi Sannan huonoimmaksi. Ihmiset
      Maailman menoa
      27
      4605
    9. Purran vuoro kiihoittua Lepomäen sääristä

      "Ulkoministeri Elina sanoo, ettei muuta pukeutumistaan sen mukaan, kenet tapaa, ja että hän ei suostuisi peittämään kasv
      Maailman menoa
      19
      3485
    10. Vasemmistolaiset paskat eivät nousseet seisomaan kun Akaan kaupunginvaltuusto

      vietti hiljaisen hetken Charlie Kirkin muistoksi https://www.aamulehti.fi/uutiset/art-2000011523016.html
      Maailman menoa
      300
      3400
    Aihe