Helppo Excel makro?

En osaa itse tehdä

Tarvitsemani makron teko ei onnistu nauhoittamalla, enkä osaa Visual Basic
kieltä yhtään. Voisiko joku auttaa?

Riveillä 1-2 on ensin tekstiä. Riviltä 3 alkaa numerot sarakkeessa B, joita
on muutamia kymmeniä allekkain. Uusimmat tiedot tulevat aina B-sarakkeen
loppuun, jonka jälkeen on tyhjä rivi ja vasta sen jälkeisellä rivillä
tehdään laskutoimitus. Alla malli:

A B C
1 tekstiä 99
2 tekstiä
3 123
4 567
5 9421
6 tyhjä rivi
7 B-sarakkeen viimeinen arvo (tässä B5) - C1 solun arvo

Makron pitäisi etsiä B-sarakkeesta rivi kerrallaan viimeinen solu, jolla on
numeerinen arvo ja vähentää sen sisältämästä luvusta solun C1 sisältämä luku
ja pistää tulos B-sarakkeen viimeisen numereesin arvon sisältävän solun
(tässä B5) jälkeisen tyhjän rivin soluun (tässä B7 soluun).

Lienee helppo tehtävä, jos yhtään osaa Visual Basic -kieltä?

13

4504

    Vastaukset

    Anonyymi (Kirjaudu / Rekisteröidy)
    5000
    • Kunde

      tekee pyytämäsi.
      Miten muuten numeron syöttö tapahtuu?

      Sub Summa()
      Dim vika As Double
      vika = Range("B1").End(xlDown).Row
      Range("B" & vika 1) = ""
      Range("B" & vika 2) = Range("B" & vika) - Range("C1")
      End Sub

      • Neuvoton

        Teinköhän jotain väärin vai tuliko makroon bugi?

        Makro ei siis toiminut, vaan herjasi Run-time error '13': Type mismatch. Debug toiminto osoitti vian olevan End Sub riviä edeltävällä rivillä.

        Lukuja olen syöttänyt käsin, lisäten aina tarvittavan määrän tyhjiä rivejä.


      • neuvoton silti
        Neuvoton kirjoitti:

        Teinköhän jotain väärin vai tuliko makroon bugi?

        Makro ei siis toiminut, vaan herjasi Run-time error '13': Type mismatch. Debug toiminto osoitti vian olevan End Sub riviä edeltävällä rivillä.

        Lukuja olen syöttänyt käsin, lisäten aina tarvittavan määrän tyhjiä rivejä.

        Kokeilin makroa niin, että poistin B-sarakkeen parilta ensimmäiseltä riviltä tekstikentät (B1-B2 soluista), jonka jälkeen makro toimi oikein.

        Oikeasti tekstien pitäisi siinä olla, joten makron pitäisi jättää ne huomioimatta ja aloittaa homma B3-solusta eteenpäin tai vielä parempi, jos se etsisi ensimmäisen numeerisen kentän B-sarakkeesta, josta eteenpäin aloitetaan tyhjän rivin etsintä.

        Onnistuisiko edellä mainitut korjaukset? Kiitos paljon jo tähänastisesta avusta!

        Mielestäni on todella upeata, että löytyy avuliaita kavereita, jotka avustavat ohjelmointiongelmien ratkaisussa.

        Itse osaan kaikenlaista muuta tehdä atk-maailmassa, mutta ohjelmointia ei ole tullut koskaan opeteltua ja se harmittaa, kun säästyisi paljon aikaa, kun osaisi tehdä näppäriä makroja eri tarpeisiin.

        Luulen, että menisi kauan aikaa (jopa vuosia?), ennen kuin oppisi tekemään monipuolisia ja vaativia makroja tuosta vain.

        Katselin aiempia viestejä ja siellä oli hienon näköisiä makroja sinun (Kunde) ja joidenkin muidenkin tekeminä. Minkälainen kokemus sinulla mahtaa olla ohjelmoinnista/makroista, jos saan kysyä?


      • Kunde
        neuvoton silti kirjoitti:

        Kokeilin makroa niin, että poistin B-sarakkeen parilta ensimmäiseltä riviltä tekstikentät (B1-B2 soluista), jonka jälkeen makro toimi oikein.

        Oikeasti tekstien pitäisi siinä olla, joten makron pitäisi jättää ne huomioimatta ja aloittaa homma B3-solusta eteenpäin tai vielä parempi, jos se etsisi ensimmäisen numeerisen kentän B-sarakkeesta, josta eteenpäin aloitetaan tyhjän rivin etsintä.

        Onnistuisiko edellä mainitut korjaukset? Kiitos paljon jo tähänastisesta avusta!

        Mielestäni on todella upeata, että löytyy avuliaita kavereita, jotka avustavat ohjelmointiongelmien ratkaisussa.

        Itse osaan kaikenlaista muuta tehdä atk-maailmassa, mutta ohjelmointia ei ole tullut koskaan opeteltua ja se harmittaa, kun säästyisi paljon aikaa, kun osaisi tehdä näppäriä makroja eri tarpeisiin.

        Luulen, että menisi kauan aikaa (jopa vuosia?), ennen kuin oppisi tekemään monipuolisia ja vaativia makroja tuosta vain.

        Katselin aiempia viestejä ja siellä oli hienon näköisiä makroja sinun (Kunde) ja joidenkin muidenkin tekeminä. Minkälainen kokemus sinulla mahtaa olla ohjelmoinnista/makroista, jos saan kysyä?

        Tekemäni makro on tunteeton solun sisällölle,sillä se vain etsii viimeisen käytössä olevan solun sarakkeessa B.Tämän jälkeen lisätään vähennyslasku

        No seuraava makro kysyy syötettävän luvun ja hyvöksyy vain luvun ja jos syötät virheellisen arvon niin antaa virheilmoituksen.
        periaate sama kuin ekassa makrossa
        etsii viimeisen käytössä olevan solun
        lisää seuraavaan alempaan soluun luvun
        tyhjentää seuraavan alemman solun(edellisen lopputulos)
        lisää seuraavaan alempaan vähennyslaskun tuloksen

        Muihin kysymyksiin vastaan ,että täysipainoisesti reilut 5 vuotta olen ohjelmoinut CAD/CAM ohjelmien parissa ja Exceliä tulee käytettyä paljon noiden systeemien integroimisessa(tuotannonhallinta tilauksesta-> kirjanpitoon). Vba:n avulla Excelillä voi tehdä mitä vaan...


      • outo virhe
        neuvoton silti kirjoitti:

        Kokeilin makroa niin, että poistin B-sarakkeen parilta ensimmäiseltä riviltä tekstikentät (B1-B2 soluista), jonka jälkeen makro toimi oikein.

        Oikeasti tekstien pitäisi siinä olla, joten makron pitäisi jättää ne huomioimatta ja aloittaa homma B3-solusta eteenpäin tai vielä parempi, jos se etsisi ensimmäisen numeerisen kentän B-sarakkeesta, josta eteenpäin aloitetaan tyhjän rivin etsintä.

        Onnistuisiko edellä mainitut korjaukset? Kiitos paljon jo tähänastisesta avusta!

        Mielestäni on todella upeata, että löytyy avuliaita kavereita, jotka avustavat ohjelmointiongelmien ratkaisussa.

        Itse osaan kaikenlaista muuta tehdä atk-maailmassa, mutta ohjelmointia ei ole tullut koskaan opeteltua ja se harmittaa, kun säästyisi paljon aikaa, kun osaisi tehdä näppäriä makroja eri tarpeisiin.

        Luulen, että menisi kauan aikaa (jopa vuosia?), ennen kuin oppisi tekemään monipuolisia ja vaativia makroja tuosta vain.

        Katselin aiempia viestejä ja siellä oli hienon näköisiä makroja sinun (Kunde) ja joidenkin muidenkin tekeminä. Minkälainen kokemus sinulla mahtaa olla ohjelmoinnista/makroista, jos saan kysyä?

        Ei ollut kirjoitusvirhe, koska kopion copy-pastella makron täältä exceliin.

        Outoa, että homma toimii uudella excel-lomakkeella ja siihen testimielessä tehdyilä riveillä, niin kuin sanoit (myös teksirivien kanssa), mutta oikealla aineistolla päätyy aina aiemmin ilmoittamaani virheilmoitukseen. Solujen muotoiluja ym. seikkoja yritin muuttaa, mutta niillä ei ollut vaikutusta, virheilmoitus tuli aina vain.

        Taidanpa jäädä odottelemaan uutta versiota, jos sellaisen ehtisit jossain välissä tehdä?


      • Kunde
        outo virhe kirjoitti:

        Ei ollut kirjoitusvirhe, koska kopion copy-pastella makron täältä exceliin.

        Outoa, että homma toimii uudella excel-lomakkeella ja siihen testimielessä tehdyilä riveillä, niin kuin sanoit (myös teksirivien kanssa), mutta oikealla aineistolla päätyy aina aiemmin ilmoittamaani virheilmoitukseen. Solujen muotoiluja ym. seikkoja yritin muuttaa, mutta niillä ei ollut vaikutusta, virheilmoitus tuli aina vain.

        Taidanpa jäädä odottelemaan uutta versiota, jos sellaisen ehtisit jossain välissä tehdä?

        ei tuu vanhuus näköjään yksin...
        unohdin liitttää makron edelliseen vastaukseeni
        tässä siis toi puuttuva makro

        Sub Summa()
        Dim vika As Double
        Dim luku As Double
        On Error GoTo virhe:
        alku:
        luku = InputBox("Anna luku")
        vika = Range("B1").End(xlDown).Row
        Range("B" & vika 1) = luku
        Range("B" & vika 2) = ""
        Range("B" & vika 3) = Range("B" & vika 1) - Range("C1")
        Exit Sub
        virhe:
        MsgBox "sinun on annettava luku", vbInformation
        Exit Sub
        End Sub


      • onnistuisiko muutos?
        Kunde kirjoitti:

        ei tuu vanhuus näköjään yksin...
        unohdin liitttää makron edelliseen vastaukseeni
        tässä siis toi puuttuva makro

        Sub Summa()
        Dim vika As Double
        Dim luku As Double
        On Error GoTo virhe:
        alku:
        luku = InputBox("Anna luku")
        vika = Range("B1").End(xlDown).Row
        Range("B" & vika 1) = luku
        Range("B" & vika 2) = ""
        Range("B" & vika 3) = Range("B" & vika 1) - Range("C1")
        Exit Sub
        virhe:
        MsgBox "sinun on annettava luku", vbInformation
        Exit Sub
        End Sub

        Kiitos paljon, homma toimii juuri niin, kuin pyysin, mutta nyt huomasin alkuperäisen pyyntöni olleen puutteellinen kokonaisuuden kannalta, kun yritin liikaa yksinkertaistaa asiaa.

        Lähtötilanne:

        esim:

        _ a b c d e f g
        1 5 7 6 2 3 kaava kaava
        2 1 9 2 3 4 kaava kaava
        3
        4 yht 3 sum(d1:d3) sum(e1:e3) jne..

        B4-solussa lasketaan B2-C1 (tulos 3).

        Makro lisäisi B3-soluun uuden luvun ja tekisi yhden tyhjän rivin lisää, jolloinka uusi lasku tehtäisiin solussa B5 ja samalla A4, D4 jne. soluissa olevat tekstit/laskut siirtyisivät rivin alaspäin.

        Makron suorituksen jälkeen:

        _ a b c d e f g
        1 5 7 6 2 3 kaava kaava
        2 1 9 2 3 4 kaava kaava
        3 46 4 5 6 7 kaava kaava
        4
        5 yht 40 sum(d1:d4) sum(e1:e4) jne..

        B5-solussa lasketaan B2-C1 (tulos 40)

        Homma pitäisi kai tehdä niin, että ensin lisätään tyhjä rivi ja sitten vasta uusi luku vanhojen perään, jonka jälkeen laskutoimitus.

        Tämä siksi, että D,E jne. solujen lopussa on sum-funktio tai joku muu funktio (esim average), joka laskee aina koko sarakkeen yhteen siihen asti esim. D5-solussa sum(D1:D4).

        F ja G sarakkeissa lasketaan poikittain asioita, esim F3 laskee C3 ja D3 välisiä suhteita.

        Lisäongelmana on se, että lukuja pitäisi syöttää B-sarakkeen viimeisen kohdan lisäksi myös A,C,D ja E sarakkeen viimeiseksi. A-sarakkeessa on päivämäärä ja muissa sarakkeissa lukuja.

        Onnistuisiko tälläinen muutos makroon?


      • Kunde
        onnistuisiko muutos? kirjoitti:

        Kiitos paljon, homma toimii juuri niin, kuin pyysin, mutta nyt huomasin alkuperäisen pyyntöni olleen puutteellinen kokonaisuuden kannalta, kun yritin liikaa yksinkertaistaa asiaa.

        Lähtötilanne:

        esim:

        _ a b c d e f g
        1 5 7 6 2 3 kaava kaava
        2 1 9 2 3 4 kaava kaava
        3
        4 yht 3 sum(d1:d3) sum(e1:e3) jne..

        B4-solussa lasketaan B2-C1 (tulos 3).

        Makro lisäisi B3-soluun uuden luvun ja tekisi yhden tyhjän rivin lisää, jolloinka uusi lasku tehtäisiin solussa B5 ja samalla A4, D4 jne. soluissa olevat tekstit/laskut siirtyisivät rivin alaspäin.

        Makron suorituksen jälkeen:

        _ a b c d e f g
        1 5 7 6 2 3 kaava kaava
        2 1 9 2 3 4 kaava kaava
        3 46 4 5 6 7 kaava kaava
        4
        5 yht 40 sum(d1:d4) sum(e1:e4) jne..

        B5-solussa lasketaan B2-C1 (tulos 40)

        Homma pitäisi kai tehdä niin, että ensin lisätään tyhjä rivi ja sitten vasta uusi luku vanhojen perään, jonka jälkeen laskutoimitus.

        Tämä siksi, että D,E jne. solujen lopussa on sum-funktio tai joku muu funktio (esim average), joka laskee aina koko sarakkeen yhteen siihen asti esim. D5-solussa sum(D1:D4).

        F ja G sarakkeissa lasketaan poikittain asioita, esim F3 laskee C3 ja D3 välisiä suhteita.

        Lisäongelmana on se, että lukuja pitäisi syöttää B-sarakkeen viimeisen kohdan lisäksi myös A,C,D ja E sarakkeen viimeiseksi. A-sarakkeessa on päivämäärä ja muissa sarakkeissa lukuja.

        Onnistuisiko tälläinen muutos makroon?

        voisitko lähettää mallin ja ohjeet e-mailina- helpompi ymmärtää mitä tahdot...
        en nyt ihan ymmärtänyt mitä pitäisi tehdä
        [email protected]


      • Asiaan
        Kunde kirjoitti:

        voisitko lähettää mallin ja ohjeet e-mailina- helpompi ymmärtää mitä tahdot...
        en nyt ihan ymmärtänyt mitä pitäisi tehdä
        [email protected]

        Voin lähettää postiakin, mutta yritän vielä kerran selventää tilannetta täällä.

        Etsitään B-sarakkeen viimeinen solu, jossa on jokin arvo ennen tyhjää riviä. Tyhjän rivin jälkeisellä rivillä on tekstiä ja kaavoja.

        Lisätään yksi tyhjä rivi edellä mainitun viimeisen arvon sisältävän solun jälkeen (joka oli siis ennen tyhjää riviä) ja kopioidaan ensimmäiselle tyhjälle riville kaavat ja muotoilut viimeiseltä riviltä, joilla merkintöjä on (koko rivi kaavoineen ja muotoiluineen).

        Tämän jälkeen vain kysytään A,B,C,D ja E soluihin tiedot. A-solussa on päiväys ja muissa lukuarvo. Kaikki kysytyt tiedot laitetaan aina oman sarakkeensa viimeiseksi ennen tyhjää riviä.

        Sitten lasketaan B-sarakkeen viimeisen solun arvo miinus C1-solun arvo ja sijoitetaan tieto tyhjän rivin jälkeiseen soluun. Esim. B4 soluun tulee uusi arvo (jonka makro kysyy), niin laskutoimituksen tulos tulee silloin tyhjän viitos rivin jälkeen B6 soluun.

        esim.

        rivi 1 tässä on dataa
        rivi 2 tyhjä rivi
        rivi 3 täällä on tekstiä ja kaavoja

        makro luo uuden rivin 1 rivin jälkeen

        rivi 1 tässä on dataa
        rivi 2 tähän tulee makron kysymät tiedot
        rivi 3 tyhjä rivi
        rivi 4 täällä on tekstiä ja kaavoja ja tämän rivin B-soluun tulee laskutoimitus B-viimeinen solu miinus C1-solu

        Ideana on siis se, että makro lisäämä rivi ei sotke olemassa olevia laskutoimituksia, joita tehdään pystysuunnassa ja vaakasuunnassa.


      • Kunde
        Asiaan kirjoitti:

        Voin lähettää postiakin, mutta yritän vielä kerran selventää tilannetta täällä.

        Etsitään B-sarakkeen viimeinen solu, jossa on jokin arvo ennen tyhjää riviä. Tyhjän rivin jälkeisellä rivillä on tekstiä ja kaavoja.

        Lisätään yksi tyhjä rivi edellä mainitun viimeisen arvon sisältävän solun jälkeen (joka oli siis ennen tyhjää riviä) ja kopioidaan ensimmäiselle tyhjälle riville kaavat ja muotoilut viimeiseltä riviltä, joilla merkintöjä on (koko rivi kaavoineen ja muotoiluineen).

        Tämän jälkeen vain kysytään A,B,C,D ja E soluihin tiedot. A-solussa on päiväys ja muissa lukuarvo. Kaikki kysytyt tiedot laitetaan aina oman sarakkeensa viimeiseksi ennen tyhjää riviä.

        Sitten lasketaan B-sarakkeen viimeisen solun arvo miinus C1-solun arvo ja sijoitetaan tieto tyhjän rivin jälkeiseen soluun. Esim. B4 soluun tulee uusi arvo (jonka makro kysyy), niin laskutoimituksen tulos tulee silloin tyhjän viitos rivin jälkeen B6 soluun.

        esim.

        rivi 1 tässä on dataa
        rivi 2 tyhjä rivi
        rivi 3 täällä on tekstiä ja kaavoja

        makro luo uuden rivin 1 rivin jälkeen

        rivi 1 tässä on dataa
        rivi 2 tähän tulee makron kysymät tiedot
        rivi 3 tyhjä rivi
        rivi 4 täällä on tekstiä ja kaavoja ja tämän rivin B-soluun tulee laskutoimitus B-viimeinen solu miinus C1-solu

        Ideana on siis se, että makro lisäämä rivi ei sotke olemassa olevia laskutoimituksia, joita tehdään pystysuunnassa ja vaakasuunnassa.

        helpoin tapa lienee tehdä lomake. lisää sinne 5 textboxia ja 2 commandbuttonia ja alleolevat koodit niihin(oletusnimet)

        Private Sub CommandButton1_Click()
        End
        End Sub
        Private Sub CommandButton2_Click()
        Dim vika As Double
        vika = Range("B1").End(xlDown).Row
        Range("A" & vika 1) = TextBox1
        Range("B" & vika 1) = TextBox2
        Range("C" & vika 1) = TextBox3
        Range("D" & vika 1) = TextBox4
        Range("E" & vika 1) = TextBox5
        Range("B" & vika 2) = Range("B" & vika 1) - Range("C1")
        Range("B" & vika 2).EntireRow.Insert Shift:=xlUp
        End Sub
        Private Sub TextBox1_AfterUpdate()
        If Not IsDate(TextBox1) Then
        MsgBox "sinun on annettava päiväys oikeassa muodossa", vbInformation
        TextBox1 = ""
        TextBox1.SetFocus
        End If
        End Sub
        Private Sub TextBox2_AfterUpdate()
        If Not IsNumeric(TextBox2) Then
        MsgBox "sinun on annettava luku", vbInformation
        TextBox2 = ""
        TextBox2.SetFocus
        End If
        End Sub

        Private Sub TextBox3_AfterUpdate()
        If Not IsNumeric(TextBox3) Then
        MsgBox "sinun on annettava luku", vbInformation
        TextBox3 = ""
        TextBox3.SetFocus
        End If
        End Sub

        Private Sub TextBox4_AfterUpdate()
        If Not IsNumeric(TextBox4) Then
        MsgBox "sinun on annettava luku", vbInformation
        TextBox4 = ""
        TextBox4.SetFocus
        End If
        End Sub
        Private Sub TextBox5_AfterUpdate()
        If Not IsNumeric(TextBox5) Then
        MsgBox "sinun on annettava luku", vbInformation
        TextBox5 = ""
        TextBox5.SetFocus
        End If
        End Sub

        tee taulukkoon nappi ja liitä siihen koodi

        Private Sub CommandButton1_Click()
        UserForm1.Show
        End Sub

        koodissa lisää muut kaavat tyyliin (B-sarakkeen laskutoimitus)
        Range("B" & vika 2) = Range("B" & vika 1) - Range("C1")

        eiköhän se noilla eväillä jo synny sultakin


      • jonkin verrran
        Kunde kirjoitti:

        helpoin tapa lienee tehdä lomake. lisää sinne 5 textboxia ja 2 commandbuttonia ja alleolevat koodit niihin(oletusnimet)

        Private Sub CommandButton1_Click()
        End
        End Sub
        Private Sub CommandButton2_Click()
        Dim vika As Double
        vika = Range("B1").End(xlDown).Row
        Range("A" & vika 1) = TextBox1
        Range("B" & vika 1) = TextBox2
        Range("C" & vika 1) = TextBox3
        Range("D" & vika 1) = TextBox4
        Range("E" & vika 1) = TextBox5
        Range("B" & vika 2) = Range("B" & vika 1) - Range("C1")
        Range("B" & vika 2).EntireRow.Insert Shift:=xlUp
        End Sub
        Private Sub TextBox1_AfterUpdate()
        If Not IsDate(TextBox1) Then
        MsgBox "sinun on annettava päiväys oikeassa muodossa", vbInformation
        TextBox1 = ""
        TextBox1.SetFocus
        End If
        End Sub
        Private Sub TextBox2_AfterUpdate()
        If Not IsNumeric(TextBox2) Then
        MsgBox "sinun on annettava luku", vbInformation
        TextBox2 = ""
        TextBox2.SetFocus
        End If
        End Sub

        Private Sub TextBox3_AfterUpdate()
        If Not IsNumeric(TextBox3) Then
        MsgBox "sinun on annettava luku", vbInformation
        TextBox3 = ""
        TextBox3.SetFocus
        End If
        End Sub

        Private Sub TextBox4_AfterUpdate()
        If Not IsNumeric(TextBox4) Then
        MsgBox "sinun on annettava luku", vbInformation
        TextBox4 = ""
        TextBox4.SetFocus
        End If
        End Sub
        Private Sub TextBox5_AfterUpdate()
        If Not IsNumeric(TextBox5) Then
        MsgBox "sinun on annettava luku", vbInformation
        TextBox5 = ""
        TextBox5.SetFocus
        End If
        End Sub

        tee taulukkoon nappi ja liitä siihen koodi

        Private Sub CommandButton1_Click()
        UserForm1.Show
        End Sub

        koodissa lisää muut kaavat tyyliin (B-sarakkeen laskutoimitus)
        Range("B" & vika 2) = Range("B" & vika 1) - Range("C1")

        eiköhän se noilla eväillä jo synny sultakin

        Täytyy myöntää, että nyt loppuu osaaminen kesken.

        Makronapin onnistuin tekemään ja kytkemään siihen makron, mutta lomakkeet ja textboxit saivat minut hämmentymään.

        Normaalisti textbox on vain kehystetty alue, johon voi vapaasti kirjoittaa tekstiä. Tässä lienee kyse jostain muusta textboxista?

        Lomake on varmaankin syöttölomake? Olen myös lomakkeiden kohdalla aika pihalla eli kuinka niitä tehdään.

        Neuvoisitko vielä lisää?

        Täytyy muistaa, että olen makrojen kanssa hyvin noviisi. Osaan lähinnä nauhoitella niitä ja ehkä aivan vähän muokata, mutten sen enempää (vielä).

        Tarkoituksena on kyllä opetella edes vähän alkeita, ettei sormi menisi suuhun heti kättelyssä.


      • Kunde
        jonkin verrran kirjoitti:

        Täytyy myöntää, että nyt loppuu osaaminen kesken.

        Makronapin onnistuin tekemään ja kytkemään siihen makron, mutta lomakkeet ja textboxit saivat minut hämmentymään.

        Normaalisti textbox on vain kehystetty alue, johon voi vapaasti kirjoittaa tekstiä. Tässä lienee kyse jostain muusta textboxista?

        Lomake on varmaankin syöttölomake? Olen myös lomakkeiden kohdalla aika pihalla eli kuinka niitä tehdään.

        Neuvoisitko vielä lisää?

        Täytyy muistaa, että olen makrojen kanssa hyvin noviisi. Osaan lähinnä nauhoitella niitä ja ehkä aivan vähän muokata, mutten sen enempää (vielä).

        Tarkoituksena on kyllä opetella edes vähän alkeita, ettei sormi menisi suuhun heti kättelyssä.

        excelissä paina näppäinyhdistelmä ALT F11 ja VBA editori aukeaa.Menusta Insert lisää userform ja näytölle tulee lomake. Työkaluvalikosta(toolbox) valitset textboxin(toista 5x) ja raahat sen lomakkeelle samoin commandbuttonin(toista(2x) kanssa.
        Tuplaklikkaa sitten jossakin kohtaa lomakkeella(älä kuitenkaan ohjektien päällä) ja lomakkeen moduuli aukeaa kopioi koodi sinne ja varmista,että nimet täsmää.Voit tietenkin nimetä objektit omilla nimillä.Objektien koodiin pääset lomakkelta tuplaklikkaamalla sen päällä
        Ja napin koodi viittaa userform1, jolla lomake aukeaa.
        eiköhän se siitä


      • lähes oikein
        Kunde kirjoitti:

        excelissä paina näppäinyhdistelmä ALT F11 ja VBA editori aukeaa.Menusta Insert lisää userform ja näytölle tulee lomake. Työkaluvalikosta(toolbox) valitset textboxin(toista 5x) ja raahat sen lomakkeelle samoin commandbuttonin(toista(2x) kanssa.
        Tuplaklikkaa sitten jossakin kohtaa lomakkeella(älä kuitenkaan ohjektien päällä) ja lomakkeen moduuli aukeaa kopioi koodi sinne ja varmista,että nimet täsmää.Voit tietenkin nimetä objektit omilla nimillä.Objektien koodiin pääset lomakkelta tuplaklikkaamalla sen päällä
        Ja napin koodi viittaa userform1, jolla lomake aukeaa.
        eiköhän se siitä

        Nyt ollaan jo lähellä täysin toimivaa!

        Syöttölomake toimii hienosti ja luvut tulevat oikeisiin paikkoihin.

        En vain osannut lisätä F ja G soluissa olevia kaavoja makroon. Ajatellaan, että vikalla rivillä (olkoon se vaikka rivi 5). F5-solussa on kaava D5/C5*100 ja G5-solussa on kaava E5/D5.

        Mikäli mahdollista, niin nämä kaavat saisivat näkyä, jos ko. soluja käy katsomassa eli makro ei toisi pelkkää laskun tulosta soluun.

        Nyt makro tuo hienosti riville 5, A-E soluihin arvot syöttölomakkeelta. Pitäisi saada myös kaavat F ja G -soluihin.

        Toinen ongelma liittyy viimeisen rivin jälkeisen tyhjän rivin jälkeiseen riviin (tässä rivi 7), jossa lasketaaan sum tai average funktioilla sarakkeita pystysuunnassa. Esim. D7-solussa kaava sum(d3:d6).

        Kun makro lisää uudet arvot esim. vitos-riville, niin sum(d3:d6) ei muutu eli muutaman lisäyksen jälkeen rivejä voi olla vaikka 10, mutta summa laskee edelleen d3:d6 väliä.

        Mikäli käsin lisää tyhjän rivin, niin excel osaa sen automaattisesti huomioida eri kaavoissa.

        Makron lisätessä rivin, näin ei näyttäisi käyvän..


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

    Luetuimmat keskustelut

    1. Israel aloitti 3. maailmansodan

      https://www.is.fi/ulkomaat/art-2000011297979.html Israel se sitten aloitti näköjään kolmannen maailmansodan.
      Maailman menoa
      438
      2507
    2. Kaksi vuotta

      Sitten mä ihastuin suhun päätä pahkaa, kun meillä klikkasi heti ekasta päivästä lähtien. Et varmasti tunne samoin ja tek
      Ikävä
      14
      2320
    3. Nainen, meidän talossa on säännöt

      1. Mies on aina oikeassa. 2. Ei vastaväitteitä. 3. Mäkättäminen kielletty. 4. Suhde on tärkein. 5. Ei salaisuuksia. 6. E
      Ikävä
      252
      1465
    4. Miksi me ei mies voida edes viestitellä irl?

      En odota enkä vaadi mitään, voitaisiin vain olla yhteyksissä jollain tapaa ihan oikeasti.
      Ikävä
      82
      1129
    5. Oliko Farmi-finaalitehtävät mielestäsi tasaveroisia Lloydin ja Johannan välillä?

      Onnea Farmi-voitosta, Lloyd. Et tainnut olla ihan kaikkien suosikki, mutta puskit voittoon! Oliko finaalitehtävät miel
      Tv-sarjat
      62
      1046
    6. Raamatun kiroukset ja uhkaukset osoittavat sen ihmisperäisyyden

      "Se sanotaan galatalaiskirjeessä, että jos joku levittää väärää evankeliumia: "...jos joku julistaa teille evankeliumia
      Hindulaisuus
      413
      1022
    7. Tekisin mitä vaan että

      Pääsisin eroon susta.
      Ikävä
      153
      905
    8. Rakennetaanko yhdessä?

      Haluaisin rakentaa sun kanssa yhteistä tulevaisuutta❤️ Onko meistä siihen? Huomaan että sulta puuttuu se joku tärkeä elä
      Ikävä
      41
      898
    9. Onko hän elämäsi rakkaus?

      Itse olen sitä mieltä että kyllä se näin taitaa nyt olla
      Ikävä
      56
      859
    10. Mies haluaisin sinun kanssa

      Rakkauslapsen. Hänestä tulisi tosi söpö ja fiksu.
      Ikävä
      79
      845
    Aihe