Arvojen siirto

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?
12547
Äänestä

Muut lukivat myös

Vastaukset 12

Vanhimmat

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

Äänestä
  • 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

    Äänestä

  • 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

    Äänestä

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

Äänestä
  • hieno ja tiivis koodi, mutta ei toimi oikein

    Äänestä

  • 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

    Äänestä

  • 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.

    Äänestä

  • 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

    Äänestä

  • 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ä.

    Äänestä

  • 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.

    Äänestä

  • 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

    Äänestä

  • 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!

    Äänestä

Kommentoi aloitusta


Caale kirjoitti:

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?

Anonyymi
5000

Ilmoita asiaton sisältö

  • Sisältää materiaalia, joka on loukkaavaa, herjaavaa, rasistista, uhkailevaa tai ahdistelevaa.

  • Materiaali sisältää nimiä, yhteystietoja tai muita henkilökohtaisia tietoja. Julkisuuden henkilöistä, julkisissa viroissa toimivista ihmisistä sekä yritysten vastuuhenkilöistä saa keskustella työhön liittyen. Myös yksityiselämään liittyvistä asioista voi keskustella siltä osin, kuin niistä on julkisesti kerrottu.

  • Sisältää lapsille haitallista tai heiltä kiellettyä materiaalia. Seksuaalinen sisältö on sallittua aiheeseen tarkoitetuilla palstoilla, joiden ikäraja on 18 vuotta.

  • Lainvastaista sisältöä voi olla mm. yksityiselämää loukkaavan tiedon levitys, kiihottaminen kansanryhmää vastaan, laiton uhkaaminen, alaikäisiin liittyvä seksuaalinen sisältö/grooming, petokset, identiteettivarkaudet, kunnianloukkaukset ja tekijänoikeusrikkomukset.

  • Sisältö ei liity palstan tai keskusteluketjun aiheeseen.

  • Viesti ei ole suomea tai ruotsia (pl. International Forums), se sisältää mainontaa, se sisältää tekijänoikeuksin suojattua materiaalia, se on massapostitus tai jokin muu syy.

Jaa keskustelu