Löytyykö vielä vanhoja VBA-taitajia? Ongelmani on vähän erikoinen, eli päivämäärien käsittely koodissa. Sain tehtäväksi uusia excel-taulukon syöttötoiminnon kun joku oli taas sotkenut excel-taulukon, jossa on n 200 päivän myynti ja varastosaldot (yksinkertaistettuna, on siellä muutakin).
Eli taulukossa on päivämäärä (pp.kk.vvvv), bruttomyynti (€), varastosaldo (kokonaisluku) ja se hankala eli myynnin ero viikontakaiseen (€). Periaatteessa simppeli homma joka voisi hoitua kaavoilla näppärästi, mutta ongelma on käyttö, eli rivit eivät ole päivämäärän mukaisessa järjestyksessä vaan rivin aloittaa joku viitenumero joka tulee päivän totaalikassan päättämisessä, se ei ole juokseva eikä järjesllisesti pääteltävissä, ellei ole joku pankkisiirron viitenumeroa vastaava alskennallinen numero.
Enhän minä koodissa päiviä laske enkä lukuja sellaisenaan, koodissa on toki muuttujat jotka on myös tietotyypitetty. Homma toimii muuten halutusti, mutta tuo viikontakaisen päivän etsiminen tuottaa ongelmia. Päivämäärästä vähennetään ja saadaan ko. päivä, ja sen riviltä noudetaan funktiolla myynti, pääkoodissa sitten tämän päivän myynnistä vähennetään funktion palauttama arvo. Näin tämän pitäisi mennä, mutta tuo päivämäärästä vähentäminen, se ei nyt jostain syystä toimi.
Seurannassa näyttää hyvältä, koodia stepillä suoritettaessa näyttää funtiolle lähtevän oikea eli tämä päivä. Peruskaavoissahan tuo olisi vain miinus 7 tuosta päivästä, mutta funktiossa tuo ei jostain syystä toimi, tuloksena on jotain ihmeellisiä päiväyksiä lukusarjoina. Funtion sisäiset muuttujat nollataan aina alussa muistijämäsotkujen minimoimiseksi, tietotyypit ovat ok, taulukossa kaavana toimii ok. Nyt olen oikaissut ja kaaaaukana oikealla olevaan soluun lasketaan tuo viikontakainen päiväys vähennyslaskulla. Sillä lailla toimii. Mutta ammattiylpeys ei anna jättää tommoisia virityksiä, kun homman pitää olla koodia, ei kaavoja. Onko päivämäärä-lukusarjan käsittelyssä jokin jippo, jonka olen jo unohtanut. Käytössä office-versio 16, tarkoitus on siirtää tämä jossain vaiheessa 365-ympäristöön, siinä lienee seuraava taistelu...
VBA Excel taulukon selaus
1
225
Vastaukset 1
- Anonyymi
Kuten aina ohjelmoinnissa, pura homma osiin, tein pari vuotta sitten silloisessa työpaikassa vähän samantyyppisen jutun, nyt työttömänä oli aikaa testailla:
sub kirjaa()
sub etsityhjarivi()
function etsivanha(tamapaiva)
- tähän yksinkertainen silmukka joka ensin laskee vanhan päivän
- funktio tämän jälkeen käy yksinkertaisella silmukalla rivejä läpi kunnes löytyy pvm-solusta vastaava arvo
-älä käytä valmiita haku-funktioita jos tiedot eivät ole päivän mukaisessa järjestyksessä, tee vaikka simppeli do-while-silmukka
- funktio palauttaa kutsujalleen rivinumeron, jolla löydetty päivä on
sub kysyuudettiedot()
- tässä voi olla joku lomake, johon syötetyt tiedot menevät muuttujiin
- kutsutaan etsityhjarivi-sub
-kutsu etsivanha-funktiota, se palauttaa rivinumeron jolla on 7 pv vanha tieto
-kirjoita tiedot taulukkoon
-tallenna taulukko
end sub
ihan simppeli juttu, mutta hommat pitää tosiaan palastella pieniin subeihin ja functiohin. Ikivanhat yhden subin rimpsut ilman alikutsuja, ne pitää unohtaa.
Ketjusta on poistettu 0 sääntöjenvastaista viestiä.
Luetuimmat keskustelut
- 1241315
Hei, voitko kuunnella
Voisitko auttaa minua selvittämään asioita? En halua ajaa sinua hulluuteen kanssani, en sitoa sinua, en esittää vaatimu1411209Joku porukka lähtenyt täältä
Ihmeen hiljainen on palsta nyt. Yleensä tänne tulvii aloituksia yms, mutta nyt on kyllä erikoisen hiljaista.2331111Costa Rica on tympeän makuinen kahvi
Ostin kahvin hinnan romahduksen kunniaksi Costa Rican "Premium Blendiä". Piti olla sataprosenttista arabialaista. No ain611082Se kun olit pitkästä aikaa silmieni edessä
Oli kyllä sykähdyttävää. Tiedätkö, mikä laittaa minut ikävöimään sinua? Kun palautan mieleeni valtavan ihanan olemuksen,57966- 63881
- 83851
- 65657
Onkin niin, että olet hulluna minuun
mutta et uskalla sitä tuoda ilmi. Salaa haaveilet kiihkeästä suhteesta, vaan siihen se jää, ja syyksi esteet ja muut. S30610- 39565
Hämmentävä hetki: TTK:sta pudonnut Johanna Puhakka lataa pettyneenä: "Sitä ei voi kieltää"
Johanna Puhakka ja Jurijs Jurza Trosenko tippuivat Tanssii Tähtien Kanssa -kisasta. Suositussa viihdeohjelmassa nähtiin14530- 32519
Jälleen näin nainen unta sinusta
Aika usein tulet uniini, enkä tiedä, mitä se tahtoo minulle sanoa. Tällä kertaa en ollut kotonasi, vaan ulkona jossain t28519- 28490
- 65478
- 29469
En haluaisi sanoa tätä
Mutta olet sokea sille, mitä sinulla jo on! Jos minä olisin sinä, pyrkisin tekemään kaikkeni kohentaakseni nykyistä pari39465- 51441
- 24437
Olet komea ja kaikkea
En uskonut kuitenkaan miten laajasti olet kaikkien naisten ihannoinnin kohde. Jälleen kerran. Palsta on hiljainen kun o19423