Arvojen siirto

Caale

Seuraavanlaiseen ongelmaan kyselisin apua.
Sheet1 B2:M2 sisältää funktioilla saatuja lukuja.
Pitäisi saada siirrettyä nämä luvut arvoina Sheet2:ssa olevaan taulukkoon seuraavalle vapaana
olevalle riville. Rivejä taulukossa on 25.
Minkähänlaisella makrolla moinen voisi onnistua?

12

529

    Vastaukset

    Anonyymi (Kirjaudu / Rekisteröidy)
    5000
    • Nimimerkki

      Pienellä testi taululla sain tällaisen toimimaa, huomaa siinä on muutamia komentoja joita voisit yhdistää, mutta laitoin noin että koodi olisi selvemmin luettavissa mitä se tekee.



      Public Sub lisaaOsa()

      Dim sarakeJossaEiOleTyhjaa As String
      Dim ekaRivi As Double

      Dim vikaRivi As Double
      Dim uusiRivi As Double

      Dim solutJotkaKopioidaan As Range
      Dim solutJohonKopioidaan As Range

      sarakeJossaEiOleTyhjaa = "B"
      ekaRivi = 19

      vikaRivi = Sheet2.Range(sarakeJossaEiOleTyhjaa & ekaRivi).End(xlDown).Row
      uusiRivi = vikaRivi 1


      Set solutJotkaKopioidaan = Sheet1.Range("B2:M2")
      Set solutJohonKopioidaan = Sheet2.Range("B" & uusiRivi & ":M" & uusiRivi)

      solutJohonKopioidaan.Value = solutJotkaKopioidaan.Value


      End Sub




      huomaa myös tuo muuttuja "sarakeJossaEiOleTyhjaa" siinä sarakkeessa ei saa olla tyhjiä soluja välissä jos käytät tätä lausetta:

      vikaRivi = Sheet2.Range(sarakeJossaEiOleTyhjaa & ekaRivi).End(xlDown).Row

      toinen vaihtoehto olisi

      vikaRivi = Sheet2.Range(sarakeJossaEiOleTyhjaa & "65536").End(xlup).Row

      • Nimimerkki

        Public Sub lisaaOsa()

        Dim uusiRivi As Integer
        Dim solutJotkaKopioidaan As Range
        Dim solutJohonKopioidaan As Range

        uusiRivi = Sheet2.Range("B19").End(xlDown).Row 1
        Sheet2.Range("B" & uusiRivi & ":M" & uusiRivi).Value = Sheet1.Range("B2:M2").Value

        End Sub


      • Nimimerkki
        Nimimerkki kirjoitti:

        Public Sub lisaaOsa()

        Dim uusiRivi As Integer
        Dim solutJotkaKopioidaan As Range
        Dim solutJohonKopioidaan As Range

        uusiRivi = Sheet2.Range("B19").End(xlDown).Row 1
        Sheet2.Range("B" & uusiRivi & ":M" & uusiRivi).Value = Sheet1.Range("B2:M2").Value

        End Sub

        Public Sub lisaaOsa()

        Dim uusiRivi As Integer
        Dim solutJotkaKopioidaan As Range
        Dim solutJohonKopioidaan As Range

        uusiRivi = Sheet2.Range("B65536").End(xlUp).Row 1
        Sheet2.Range("B" & uusiRivi & ":M" & uusiRivi).Value = Sheet1.Range("B2:M2").Value

        End Sub


    • Sub Kopioi()
      Dim KopioAlue As Range
      On Error Resume Next
      Set KopioAlue = Range("Taul1!B2:M2")'muuta aluetta tarvittaessa
      KopioAlue.Copy Destination:=Range("Taul2!B65536").End(xlUp).Offset(1, 0) 'kopioi B sarakkeesta alkaen muuta tarvittaessa
      End Sub

      • Nimimerkki

        hieno ja tiivis koodi, mutta ei toimi oikein


      • Nimimerkki kirjoitti:

        hieno ja tiivis koodi, mutta ei toimi oikein

        Mikä virheilmoitus tulee jos hipsaat On Error Resume Next rivin?
        Ainakin mulla kopioi Taul1 alueen B2:M2 Taul2 aina seuraavalle vapaalle riville B sarakkeessa


      • Nimimerkki
        kunde kirjoitti:

        Mikä virheilmoitus tulee jos hipsaat On Error Resume Next rivin?
        Ainakin mulla kopioi Taul1 alueen B2:M2 Taul2 aina seuraavalle vapaalle riville B sarakkeessa

        Ei virheilmoitusta, mutta kopioi noihin vain nollia.
        Kun tarkistin noi ei ne nollia ollutkaan vaan kaavoja jotka palauttaa nollia. Eli koodi on oikein vaikka testi ei läpi mennyt.


      • Nimimerkki kirjoitti:

        Ei virheilmoitusta, mutta kopioi noihin vain nollia.
        Kun tarkistin noi ei ne nollia ollutkaan vaan kaavoja jotka palauttaa nollia. Eli koodi on oikein vaikka testi ei läpi mennyt.

        kysyjä halusikin vain arvot...

        Sub Kopioi()
        On Error Resume Next
        Range("Taul1!B2:M2").Copy 'muuta aluetta tarvittaessa
        Range("Taul2!B65536").End(xlUp).Offset(1, 0).PasteSpecial (xlPasteValues) 'kopioi B sarakkeesta alkaen muuta tarvittaessa
        End Sub


      • Caale
        kunde kirjoitti:

        kysyjä halusikin vain arvot...

        Sub Kopioi()
        On Error Resume Next
        Range("Taul1!B2:M2").Copy 'muuta aluetta tarvittaessa
        Range("Taul2!B65536").End(xlUp).Offset(1, 0).PasteSpecial (xlPasteValues) 'kopioi B sarakkeesta alkaen muuta tarvittaessa
        End Sub

        Kundelle ja Nimimerkille. Homma toimii juuri niinkuin halusin Kunden jälkimmäisellä makrolla. Osaisinpa vaan itsekin tehdä.


      • Caale
        Caale kirjoitti:

        Kundelle ja Nimimerkille. Homma toimii juuri niinkuin halusin Kunden jälkimmäisellä makrolla. Osaisinpa vaan itsekin tehdä.

        Makro toimii muuten hienosti, mutta huomasin jälkeenpäin, että alue, jonne tiedot kopioidaan Taul2:ssa jää aktiiviseksi (maalatuksi).
        Saakohan sitä mitenkään muutetuksi ja kursorin paikaksi vaikka solu A1 Taul2:ssa. Yrityksistä
        huolimatta en saanut asiaa korjatuksi.


      • Nimimerkki
        Caale kirjoitti:

        Makro toimii muuten hienosti, mutta huomasin jälkeenpäin, että alue, jonne tiedot kopioidaan Taul2:ssa jää aktiiviseksi (maalatuksi).
        Saakohan sitä mitenkään muutetuksi ja kursorin paikaksi vaikka solu A1 Taul2:ssa. Yrityksistä
        huolimatta en saanut asiaa korjatuksi.

        Tuossa minun koodissa ei aktivoitu kursoria ollenkaan, eikä muutenkaan vaikuteta kursorin liikkeisiin.
        Siinä minun koodissa vain sijoitettiin arvot ( Value ) toisesta paikasta toiseen paikkaan, ja tiivistetty koodihan oli:


        Dim uusiRivi As Integer
        Dim solutJotkaKopioidaan As Range
        Dim solutJohonKopioidaan As Range

        uusiRivi = Sheet2.Range("B65536").End(xlUp).Row 1
        Set solutJotkaKopioidaan = Sheet1.Range("B2:M2")
        Set solutJohonKopioidaan = Sheet2.Range("B" & uusiRivi & ":M" & uusiRivi)

        solutJohonKopioidaan.Value = solutJotkaKopioidaan.Value


        Kokeile muokata tuosta sinulle sopivaksi


      • Caale
        Nimimerkki kirjoitti:

        Tuossa minun koodissa ei aktivoitu kursoria ollenkaan, eikä muutenkaan vaikuteta kursorin liikkeisiin.
        Siinä minun koodissa vain sijoitettiin arvot ( Value ) toisesta paikasta toiseen paikkaan, ja tiivistetty koodihan oli:


        Dim uusiRivi As Integer
        Dim solutJotkaKopioidaan As Range
        Dim solutJohonKopioidaan As Range

        uusiRivi = Sheet2.Range("B65536").End(xlUp).Row 1
        Set solutJotkaKopioidaan = Sheet1.Range("B2:M2")
        Set solutJohonKopioidaan = Sheet2.Range("B" & uusiRivi & ":M" & uusiRivi)

        solutJohonKopioidaan.Value = solutJotkaKopioidaan.Value


        Kokeile muokata tuosta sinulle sopivaksi

        Nyt toimii juuri niinkuin halusinkin. Kiitos!


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

    Luetuimmat keskustelut

    1. Sanna Marin vetänyt leukoja 11 kertaa

      Tästähän oli joskus polemiikkia, kun muistaakseni lupasi kymmenen tai jotain vedellä. No nyt niin on, ainakin omien san
      Maailman menoa
      90
      6138
    2. Kirjoita

      … jotakin minkä vain kaivattusi tietää
      Ikävä
      146
      2599
    3. Sosialismia Tampereella: Virallinen ilmiantolinja avautuu kaupungissa

      Nyt siis mennään mansessa ihan justiinsa samaan malliin kuin entisessä Neuvostoliitossa, jossa saattoi ilmiantaa naapuri
      Maailman menoa
      168
      2449
    4. Farmi Suomi: Kokeeko Frederik, 81, saman kohtalon kuin ikämies Danny?

      Danny, musiikkineuvos Ilkka Lipsanen, nähtiin mukana Farmi Suomi -realityssä v. 2024. Danny teki yllätysratkaisun ja tuo
      Tv-sarjat
      31
      2279
    5. Tyhmä persuväite = köyhä argumentti

      Väite, että vasemmistopuolueita äänestäisivät vain “köyhät, tapatyöttömät tai heikoilla lahjoilla varustetut”, kertoo en
      Maailman menoa
      45
      2218
    6. Suomalainen tutkimus paljasti oudon asian vasemmistolaisista - he häpeävät itseään

      Kyllä, asia on faktaa. Suomalainen tutkimus osoittaa, että vasemmistolaisina itseään pitävät kansalaiset häpeävät itseää
      Maailman menoa
      69
      2145
    7. Tiesitkö? Andy McCoy ja Pelle Miljoona saavat taiteilijaeläkettä - Tämän suuruinen eläke on

      Ylimääräiset taiteilijaeläkkeet on jaettu ja 59 taiteilijaa sai sen. Taiteilijoiden keskimääräinen eläketulo jää hyvin a
      Maailman menoa
      74
      1693
    8. Tätä et nähnyt tv:ssä: Frederik paljastaa - Totuus "haisevasta jäynästä" pehtoorille Farmilla

      Frederik veti ns. herneen nenään ja päätti kostaa pehtoorille. Mitäs mieltä olet Frederikin "aamutoimista"? Lue jutt
      Tv-sarjat
      8
      1491
    9. Haluan sut

      Voitaisiinko tutustua paremmin toisiimme? Ovi on aina auki sinulle. Lähelle.
      Ikävä
      40
      1389
    10. Kunnanvaltuusto koolle heti

      Tämä on erittäin vakava tilanne 17 hakkiita oli hyrylle mutta Kas kummaa kaksi hakkiota loppusuora oli Kainuusta ja Brys
      Hyrynsalmi
      29
      1319
    Aihe