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ä?
Helppo Excel makro?
13
4504
Vastaukset
- 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 SubKiitos 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 sultakinTä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
Israel aloitti 3. maailmansodan
https://www.is.fi/ulkomaat/art-2000011297979.html Israel se sitten aloitti näköjään kolmannen maailmansodan.4382507Kaksi vuotta
Sitten mä ihastuin suhun päätä pahkaa, kun meillä klikkasi heti ekasta päivästä lähtien. Et varmasti tunne samoin ja tek142320Nainen, 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. E2521465Miksi me ei mies voida edes viestitellä irl?
En odota enkä vaadi mitään, voitaisiin vain olla yhteyksissä jollain tapaa ihan oikeasti.821129Oliko 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 miel621046Raamatun kiroukset ja uhkaukset osoittavat sen ihmisperäisyyden
"Se sanotaan galatalaiskirjeessä, että jos joku levittää väärää evankeliumia: "...jos joku julistaa teille evankeliumia4131022- 153905
Rakennetaanko yhdessä?
Haluaisin rakentaa sun kanssa yhteistä tulevaisuutta❤️ Onko meistä siihen? Huomaan että sulta puuttuu se joku tärkeä elä41898- 56859
- 79845