Kyseinen macro ajaa 300 kertaa "Call" Laske macron mutta saako tuohon lisättyä mitenkään kunnes A sarkkeessa on tyhjä solu "blank" niin macron ajaminen loppuisi siihen ettei tarvitse odotella että se ajaa 300 kertaa tyhjää taulukkoa.
Sub LoopMacro()
Dim i As Integer
For i = 1 To 300
Laske '<-- kutsuu Laske macron ja ajaa sen 300 kertaa
Next i
End Sub
Excel - Lopeta macro kun tyhjä solu
8
464
Vastaukset 8
- ExitSub
Oletan, että ko. makro kävisi läpi A-saraketta rivi riviltä.
Lisää silmukkaan ennen Laske-makron kutsua:
if cells(i,1)="" then exit sub Miksi loopata 300 kertaa ja kutsua makroa kun sen voi kutsua vain kerran ja tehdä jutut?
- U-Bond
Itse asiassa tuon Laske macron takana on monta eri macroa, tuo tekee niin että taulukkoon tulee epämääräisesti dataa päivittäin, se voi olla esim 10 solua tai se voi olla 1000 solua mutta kaikki on sidottu päivämäärään, eli jokainen sama päivämäärä voi olla 50 solua = aina yksi laskenta erä jonka jälkeen se siirtelee laskennat toisille välilehdille ja palaa takaisin tuohon LoopMacroon, mikäli siellä ei ole enää dataa niin tuo oma tekele jatkaa silti sen 299kertaa laskien tyhjiä taulukoita.
Kokeilin ExitSub nimimerkin ehdotusta mutta se ei pysäytä tuota omaa macroa vaan jatkaa silti sen 300 kertaa tai mitä siihen on limiitiksi asetettu. Varmasti se toimii mutta jotain en nyt vaan tajua.Edelleen kuulostaa tosi tehottomalta ratkaisulta ;-)
jos tietosi on A1-A300 niin if cells(i,1)="" then exit sub toimii, muuten pitää muuttaa
vastaamaan alkavaa solua tyyliin if cells(99 i,1)="" then exit
missä 99 i on aloitussolu eli tässä tapauksessa A100
ja jos eri sarake kuin A esim B niin cells(99 i,2) eli B100
Keep EXCELing
@Kunde
- U-Bond
Joo no tehoton se on mutta kun yritin tehdä kerran Do While loopin niin se oli niin tehokas että jos olisin tehnyt sen viime vuonna niin se ajaisi vieläkin sitä samaa looppia, se ei koskaan pysähtynyt. Kun tämä tekele täytyy jättää oman onnensa nojaan ja pelästyin kun se vaan jatkoi ja jatkoi niin siksi tein tuohon limiitin 300 että varmasti pysähtyy viimeistään 300:n ajon jälkeen.
Määräävä solu on A-sarakkeessa ja kun A-sarake on täysin tyhjä niin sitten pitäisi myös makro lopettaa ja data alkaa A1 solusta loppu on määräämätön määrä, en voi sitä ennakolta tietää.
Mutta sain teiltä kummaltakin ison kopin, kiitos molemmille. Sovelsin sen näin ja tuntuisi toimivan.
Sub LoopMacro_one()
Dim i As Integer
For i = 1 To 300
dev = Worksheets("Data").Range("A" & i)
If dev = "" Then Exit For
Laske '<--kutsuu Laske macron ja ajaa sen 300 kertaa
Next i
End Sub
Paitsi että se ei aja viimeistä solua/soluja tyhjäksi pitäisi olla joku i i tai x x tai joku? Onko ideoita, en osaa. - U-Bond
Sub LoopMacro_one()
Dim i As Integer
For i = 1 To 300
dev = Worksheets("Data").Range("A" & i)
If dev = "" Then Exit For
Laske '<--kutsuu Laske macron ja ajaa sen 300 kertaa ( siis ajaa nyt tässä tapauksessa max 300 kertaa ) mutta kyllähän te sen tiesitte tietenkin.
Next i
End Sub
Paitsi että se ei aja viimeistä solua/soluja tyhjäksi pitäisi olla joku i i tai x x tai joku? Onko ideoita, en osaa.
----------------------------------------------------------------------------------
Soluissa A on päivämäärä joka on muutettu digitaaliseksi = DATEVALUE() ja sitten ne Sort:taan ja tuo datevalue määrää aina yhden ajokerran on niitä soluissa 1 tai 120 samaa numeroa se on aina yksi ajokerta ( tai loop).
Sarake A
Ensimmäinen ajo jonka jälkeen Laske makro poistaa nämä rivit kun on tehnyt muita toimintoja ja nostaa seuraavat valuet alkaen A1 soluun
42505
42505
42505
Toinen ajo jonka jälkeen Laske makro poistaa nämä rivit kun on tehnyt muita toimintoja ja nostaa seuraavat valuet alkaen A1 soluun
42504
42504
42504
42504
42504
42504
Kolmas ajo jne.
42503
Neläs ajo jne
42501
42501
42501
42501
Viides ajo jne.
42500
Mutta nämä viimeiset valuet jää syystä jostain ajamatta, ne pitäisi saada myös mukaan looppiin ja vasta kun A sarake on täysin tyhjä niin sitten Macro lopetetaan.
42498
42498
42498
Muutoin Sub LoopMacro_one() toimii eikä aja sitä enää 300 kertaa turhaan.- ExitSub
Jos ymmärsin oikein, Data-lehdeltä poistetaan rivejä ja sinne ei saa lopuksi jäädä riviäkään. Unohda for-silmukka. Viimeiset rivit jäävät poistamatta, koska Laske-makro menee sorkkimaan A-saraketta. Muuttuja i kasvaa joka kierroksella, ja kun solu Range("A" & i) on jossain vaiheessa tyhjä, lopetusehto täyttyy, mutta sen yläpuolella voi olla dataa.
Tämä rakenne voisi toimia. Se toistaa makroa niin kauan, että solu A1 on tyhjä.
Do
LAske
Loop until Worksheets("Data").Range("A1") = "" - U-Bond
ExitSub
Kokeilin ehdotustasi
Tein monta testi ajoa eri pituisilla Data jaksotuksilla ja toimi jokaisessa ihan nappiin, nyt se ajaa kaiken puhtaaksi taulukosta ja lopettaa sen jälkeen makron.
Kiitti!
Ketjusta on poistettu 0 sääntöjenvastaista viestiä.
Luetuimmat keskustelut
Riikka Purra on mukana Suomen huutokauppakeisari -sarjassa
Suomen huutokauppakeisari on tavallisten suomalaisten ohjelma. Sarjan suosiosta kertoo se, että nyt alkaa jo 19. kausi t1961807Kuuleppas
ensimmäiset naissuhteet toimii miehelle eräänlaisena oppikouluna, mutta hän ei välttämättä itse ymmärrä oppineensa mitää2661222Gallup: Kansalaiset eivät usko velkajarruun
Puolet suomalaisista ei usko velkajarrun vaatimien sopeutusten toteutuvan, kertoo Iro Researchin kyselytutkimus. Kokoom66963Mulla ei ole Suomessa enää mitään
4 vuotta joutuu asumaan henkisessä vankilassa. Sitten voi muuttaa takaisin ulkomaille.183918- 50810
Provider miehistä..
Tietyt miehet puhuvat ilkeästi naisista, jotka haluavat elää miehen tuloilla. Eikö? Mutta miksi tietyt miehet siitä pah251793- 61788
Sinulle nainen
En ehkä koskaan osannut sanoa tätä oikein. Minun vaikeuteni luottaa liittyi ennen kaikkea menettämisen pelkoon. Siihen64768- 48749
- 93732
- 161700
Yt:t kunnassa päättyi
Oliko nämä tarpeelliset ja ratkeaako taloushuolet näiden avulla? Lehdessä ilmoitettujen lukujen perusteella lisää on tul76672- 42666
Ethän voinut nainen tietää, että rikot rikotun
Omaa elämää taas mietin aamuyön tunteina. En vieläkään löytänyt muistin sokkeloista ainuttakaan onnen hetkeä. Kaipuu on71636Hei rakkaani.
Kohtaaminen lähestyy. Miten teemme sen? Kumpi ottaa yhteyttä vai törmäämmekö jossain sattumalta? Tuleva vaimosi50633Martsusta tuli leuhka
Ja ylimielinen. Hän ei nosta persettäkään ilmaseksi . Luulempa et nämä ei tee hyvää hyvinvointivalmennuksille.... Nannal198627Tulisitpa käymään joskus vielä
Olisi niin kiva nähdä pitkästä aikaa. Oletko vielä joskus tulossa?... Niin monet muutoksen tuulet puhaltavat, olisi lohd24586- 31578
Kuisla Group Oy jättänyt yrityssaneeraushakemuksen
Samalla yrityssaneeraukseen on hakeutunut Kuisla henkilökohtaisesti ja Seinäjoen Motelli Oy, joka omistaa Sorsanpesän ki25549Kiulu myynnissä!
Kiulu hakee taas uutta yrittäjää. https://www.yritysporssi.fi/etela-pohjanmaa-lansi-suomi-finland/myytavat/yritykset/ma26548