VBA:n excel ongelmia

Teen kouluun pakollista harjoitustyötä Excelin VBA:lla (en tiedä noita virallisia nimityksiä, toivottavasti ymmärrätte). Ongelmani on nyt sellainen missä opettajani(kaan) ei osaa minua auttaa. Olen tehnyt eräänlaisen tietokilpailun jossa aina liikutaan formilta formille. Aihealueita on kolme ja jokaisessa 10 kysymystä. Kun kaikkiin kysymyksiin on vastattu, formi näyttää montako oikeaa vastausta kilpailija sai. Tämän jälkeen CommandButtonilla päästään formille josta voidaan valita aihealue, jälleen buttonilla. Ongelma -josta siis on tullut aivan ylitsepääsemätön este- on se, että ohjelma menee kerran läpi, mutta jos yritän pelata uudelleen saman aihealueen kysymykset ohjelma kaatuu. Käskyt napissa josta aihealue valitaan on:
form2.show
form1.hide
Antaa ilmoituksen että *form already displayed; can't show modally*.
Täytyy myöntää etten oikein VBA:ta hallitse, mutta nyt olisi pakko. Yritin ehdottaa opettajalle, että jos tuo tarvitsee jonkinnäköisen toistolauseen, johon opettaja sanoi ettei tarvitse. Eipä kuitenkaan itse osannut minua auttaa. Ehkä siksi, että naisia olemme molemmat =D
...mutta siis, olisin todella kiitollinen jos joku minua osaisi ja jaksaisi auttaa.
Ja jos joku jaksaisi niin voisiko tehdä excelin VBA:lla vaikka kolme formia, jotka siirtyvät form1->form2->form3->form1... buttonilla ja tuo ympyrä kulkisi niin kauan kun haluaa. Ettei se tekisi siis tuota mitä minun loistava ohjelmani tekee. Ja laittaisi sitten noiden fomien buttonien koodit tänne.
3533
Äänestä

Muut lukivat myös

Vastaukset 3

Vanhimmat

voisi olla se, että tietokilpailun aloitus ja lopetus tapahtuisi Excelin normaalitilassa eli soluissa. Silloin formit vapautuisivat uutta käyttökertaa varten.

Esimerkiksi tietokilpailun loputtua ohjelma sulkisi formin ja tulostaisi kilpailijan nimen ja tuloksen soluihin tai piirtäisi vaikkapa kilpailijalle graafin jossa näkyisivät oikeat ja väärät vastaukset.

Saattaahan olla että tehtävän tarkoituksena on tehdä vain formien kautta pyörivä ohjelma, joten siihenhän tuo neuvo ei juuri auta. Silloin voisi olla paikallaan yrittää ohjelmallisesti vapauttaa muistissa olevat formit.

Normaalitilanteessa vähänkään vaativampaa Excel-sovellusta ei yleensä kannata rakentaa vain formien varaan. Tämä siksi että esimerkiksi verkkoympäristössä formit aiheuttavat Excel-tiedostojen kaatumista turhankin usein...

Äänestä

VBA:ssa on modaalisia ja ei-modaalisia ikkunoita,
en nyt tarkkaan muista noitten eroa mutta se liittyi joten siihen että modaalinen ikkuna ei anna fokusta muille ikkunoille ennenkuin se on suljettu.

Jokatapauksessa ongelmasi luultavasti ratkeaa vaihtamalla formien tyyppi ei-modaaliseksi, eli kun klikkaat suunnittelutilassa formin auki ja asetat ominaisuuden "Showmodal" arvoksi "False" kaikille formeillesi niin tuon pitäisi toimia, kokeilin itse äsken ja näin se näytti menevän.

Äänestä
  • Et tiedä mistä minut pelastit =) KIITOS!

    Äänestä

Kommentoi aloitusta


Laura kirjoitti:

Teen kouluun pakollista harjoitustyötä Excelin VBA:lla (en tiedä noita virallisia nimityksiä, toivottavasti ymmärrätte). Ongelmani on nyt sellainen missä opettajani(kaan) ei osaa minua auttaa. Olen tehnyt eräänlaisen tietokilpailun jossa aina liikutaan formilta formille. Aihealueita on kolme ja jokaisessa 10 kysymystä. Kun kaikkiin kysymyksiin on vastattu, formi näyttää montako oikeaa vastausta kilpailija sai. Tämän jälkeen CommandButtonilla päästään formille josta voidaan valita aihealue, jälleen buttonilla. Ongelma -josta siis on tullut aivan ylitsepääsemätön este- on se, että ohjelma menee kerran läpi, mutta jos yritän pelata uudelleen saman aihealueen kysymykset ohjelma kaatuu. Käskyt napissa josta aihealue valitaan on:
form2.show
form1.hide
Antaa ilmoituksen että *form already displayed; can't show modally*.
Täytyy myöntää etten oikein VBA:ta hallitse, mutta nyt olisi pakko. Yritin ehdottaa opettajalle, että jos tuo tarvitsee jonkinnäköisen toistolauseen, johon opettaja sanoi ettei tarvitse. Eipä kuitenkaan itse osannut minua auttaa. Ehkä siksi, että naisia olemme molemmat =D
...mutta siis, olisin todella kiitollinen jos joku minua osaisi ja jaksaisi auttaa.
Ja jos joku jaksaisi niin voisiko tehdä excelin VBA:lla vaikka kolme formia, jotka siirtyvät form1->form2->form3->form1... buttonilla ja tuo ympyrä kulkisi niin kauan kun haluaa. Ettei se tekisi siis tuota mitä minun loistava ohjelmani tekee. Ja laittaisi sitten noiden fomien buttonien koodit tänne.

Anonyymi
5000

Ilmoita asiaton sisältö

  • Sisältää materiaalia, joka on loukkaavaa, herjaavaa, rasistista, uhkailevaa tai ahdistelevaa.

  • Materiaali sisältää nimiä, yhteystietoja tai muita henkilökohtaisia tietoja. Julkisuuden henkilöistä, julkisissa viroissa toimivista ihmisistä sekä yritysten vastuuhenkilöistä saa keskustella työhön liittyen. Myös yksityiselämään liittyvistä asioista voi keskustella siltä osin, kuin niistä on julkisesti kerrottu.

  • Sisältää lapsille haitallista tai heiltä kiellettyä materiaalia. Seksuaalinen sisältö on sallittua aiheeseen tarkoitetuilla palstoilla, joiden ikäraja on 18 vuotta.

  • Lainvastaista sisältöä voi olla mm. yksityiselämää loukkaavan tiedon levitys, kiihottaminen kansanryhmää vastaan, laiton uhkaaminen, alaikäisiin liittyvä seksuaalinen sisältö/grooming, petokset, identiteettivarkaudet, kunnianloukkaukset ja tekijänoikeusrikkomukset.

  • Sisältö ei liity palstan tai keskusteluketjun aiheeseen.

  • Viesti ei ole suomea tai ruotsia (pl. International Forums), se sisältää mainontaa, se sisältää tekijänoikeuksin suojattua materiaalia, se on massapostitus tai jokin muu syy.

Jaa keskustelu