VBA Excel taulukon selaus

Anonyymi

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

1

187

    Vastaukset

    Anonyymi (Kirjaudu / Rekisteröidy)
    5000
    • 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

    1. Jens Ihlen (ex Kukka) poika todistaa oikeudessa

      10:49 "Välit ovat olemattomat" Minkälainen isäsi ja sinun välinen suhde on tällä hetkellä? "Minulla ei ole minkäännäkö
      Maailman menoa
      265
      9985
    2. K-kaupassa on mukava käydä, kun ei tarvitse katsella köyhiä

      vasemmistolaisia, joista monet myös varastavat. Mielellään maksaa vähän enemmän tuotteista K-kaupassa, jotka ovat paljon
      Maailman menoa
      192
      5694
    3. Suomeen ei kuulu ihmiset jotka ei halua kätellä toisia ihmisiä, koska tämä on vääräuskoinen

      Nainen joka ei halunnut kätellä Stubbia on selvästi ääripään muslimi, eli sitä sakkia josta niitä ongelmia koituu. Ulos
      Maailman menoa
      167
      5274
    4. PS:n Purra teki -JÄTTI-VELAT

      * * PS:n Purra teki -JÄTTI-VELAT - ! ja jätti MaksuHuolet -Kansan Maksettavaksi -! *
      Maailman menoa
      75
      4901
    5. Vain vasemmistolaiset rakennemuutokset pelastavat Suomen

      Kansaa on ankeutettu viimeiset 30+ vuotta porvarillisella minäminä-talouspolitiikalla, jossa tavalliselta kansalta on ot
      Maailman menoa
      7
      3183
    6. Persut huutaa taas: "kato! muslimi!"

      Persut on lyhyessä ajassa ajaneet läpi kaksi työntekijöiden oikeuksien heikennystä, joita se on aiemmin vastustanut. Pe
      Maailman menoa
      0
      2550
    7. Ootko sä nainen suuttunut

      jostain? Harmi jos tullut väärinkäsityksiä.
      Ikävä
      212
      2479
    8. Nainen, sanotaan että totuus tekee kipeää

      Ehkä mutta se voi olla myös se kaikkein kamalin asia kohdata. Kuplassa on turvallista, kun tietää vähemmän on helpompi.
      Ikävä
      12
      2289
    9. Valtio lopettaa pienituloisten perheiden kylpylälomien tukemisen

      Pienituloiset suomalaiset ovat voineet vuosikymmenten ajan hakea tuettuja lomia terveydellisin, sosiaalisin ja taloudell
      Maailman menoa
      355
      2049
    10. Menen nyt koisimaan

      Ja en ehkä palaa tänne. Asia on nyt loppuunkäsitelty ja totuus tuli ilmi
      Ikävä
      22
      1828
    Aihe