Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VBA: ToggleButton

Sivun loppuun

Moukka [08.07.2004 13:45:10]

#

Mulla on tossa 40 ToggleButtonia nimeltään ToggleButton1-ToggleButton40. Nyt tarttisin tietoa siitä, että miten voin valita noi kaikki koodissa peränjälkeen. Oon kokeillu mm for-nextillä ToggleButton("" & Numero), mutta ei toimi. Onko hyviä vinkkejä?

sooda [08.07.2004 14:34:56]

#

Huono hommeli, etkö osaa indeksoida niitä. Muuta jokaisen nimi vaikka ToggleButtoniksi tyyliin
ToggleButton1 -> ToggleButton, indeksiksi 0
ToggleButton2 -> ToggleButton, indeksiksi 1
ToggleButton3 -> ToggleButton, indeksiksi 2
ToggleButton4 -> ToggleButton, indeksiksi 3
jne. sitten koodiin esim for i=0 to ToggleButton.UBound johon ToggleButton(i) jotaki. Indeksejä kannattaa käyttää aina kun voi :)

Moukka [08.07.2004 14:56:37]

#

Siinä ongelman ydin. En osaa indeksoida niitä. Apua vielä siihen?

Heikki [08.07.2004 15:18:47]

#

Vaikkapa näin:
Tee formille yksi nappi nimeksi ToggleButton. Valitse se ja paina ctrl+c. Paina sitten ctrl+v ja VB kysyy tehdäänkö kontrolleri-taulukko. Paina Yes ja nyt vain rämpyttelet ctrl+v kunnes tarvittava määrä komponentteja on ilmestynyt ruudulle.

Antti Laaksonen [08.07.2004 17:54:21]

#

Jos kontrollit ovat jo valmiiksi formilla, muuta niiden kaikkien nimeksi ToggleButton ja vastaa toisen muutoksen kohdalla tulevaan kysymykseen Yes. Silloin indeksit menevät oikein automaattisesti.

Moukka [08.07.2004 23:15:33]

#

Enpä saanu onnistumaan vaikka kokeilin himassa uudemmalla Excelillä. Noi ToggleButtonit on ihan tavallisella Sheetillä mulla. En tiedä onko tolla ees väliä... Vaikka kokeilin laittaa UserFormille tota niin ei se kysyny multa mitään. Pahoittelen listan kuormittamista, mutta jos joku viitsisi ihan rautalangasta tällaiselle aloittelijalle tän vääntään. Kiitos jo tulleista vinkeistä!

Antti Laaksonen [08.07.2004 23:20:21]

#

Olisit heti kertonut, että kyse on Excelistä. :) Siinä nimittäin tuota Index-ominaisuutta ei jostain syystä ole. Ongelmaan on kuitenkin olemassa ratkaisu, joka löytyy vanhemmasta keskustelusta.

Moukka [09.07.2004 14:50:31]

#

Ei sitä alottelija heti osaa kaikkea oleellista kertoa :) Enpä saanu totakaan toimimaan... Kun kirjotan ton in Me., niin avautuvassa valikossa ei vaihtoehtona ole Controls-kohtaa. Mitä tuo Me tuossa malli koodissa itse asiassa tarkoittaa?

Edelleen kiitän jo tulleesta avusta ja toivottavasti vielä tulevasta...

Heikki [10.07.2004 14:10:57]

#

Me on muistaakseni formi, jossa koodia suoritetaan sillä hetkellä.

Moukka [12.07.2004 10:06:33]

#

Kiitos tuosta tiedosta!
Vieläkään en ole tosin sellaista apua saanut, mikä auttaisi ongelmani ratkaisemisessa...

Heikki [12.07.2004 10:13:01]

#

Jatkanpa tätä vielä: Onko VB6:lla mahdollista luoda moniulotteisia kontrolleritaulukoita (oikea termi?)?

Blaze [12.07.2004 12:01:19]

#

Heikki kirjoitti:

Jatkanpa tätä vielä: Onko VB6:lla mahdollista luoda moniulotteisia kontrolleritaulukoita

Ottaen huomioon, että taulukointi perustuu index-ominaisuuteen, joka on tyyppiä Integer, en tuohon jaksa uskoa. Jos moniulotteisuus on ehdottomen tärkeää, itse varmaankin kokeilisin luoda jonkinnäköistä wrapperifunktiota, joka muuntaa moniulotteiset indeksit yksiuotteisiksi.

Heikki kirjoitti:

(oikea termi?)?

Eiköhän tuo ihan pätevä suomennos control arraylle ole.

sooda [12.07.2004 12:16:23]

#

Heikki kirjoitti:

Jatkanpa tätä vielä: Onko VB6:lla mahdollista luoda moniulotteisia kontrolleritaulukoita (oikea termi?)?

Kontrollitaulukoksi kutsuisin. Ei voi tehdä, mutta onhan helppo simuloida sitä tyyliin kontrolli(y*(xmax+1)+x).

Antti [12.07.2004 13:19:35]

#

En nyt aivan heti keksi mihin kolmiuloitteista kontrollitaulukkoa tarvitsisi käyttää?

Jos haluat kolmeuloitteista taulukointia voit käyttää aina ArrayStrukteja (Type)... Siitä, että objekti on kolmiuloitteisessa taulukossa ei juurikaan taida olla hyötyä - vai keksiikö joku muu jotain hyvää syytä?

Moukka [12.07.2004 13:46:34]

#

Tämä nyt on eksynyt aiheesta täysin. Edelleen kaipaan tietoa siitä miten saan nuo kaikki Excel-sivulla olevat ToggleButtonit valittua kerralla päälle tai pois päältä.

Pahoittelen, että tämän toista, mutta kun aiheesta eksyttiin kauas...

Antti [13.07.2004 00:22:38]

#

Kaikkein työläin, mutta yksinkertaisin tapa on
tehdä funktio joka laittaa ne pois päältä tai päälle kutsuttaessa:

Private Sub ToggleAllToggleButtons(bToggleType as boolean)
ToggleButton1.Enabled=bToggleType
ToggleButton2.Enabled=bToggleType
ToggleButton3.Enabled=bToggleType
ToggleButton4.Enabled=bToggleType
ToggleButton5.Enabled=bToggleType
ToggleButton6.Enabled=bToggleType
ToggleButton7.Enabled=bToggleType
...
ToggleButton40.Enabled=bToggleType
End Sub

Edit: typoja

Moukka [13.07.2004 08:17:26]

#

Toi on toimivaa, mutta niin "rumaa". Sen lisäks, että ne pitää saada kaikki valittua ja pois-valittua kerralla, niin ne pitää saada myös näkyviin ja pois parin muun nappulan käskystä. Siks oisin halunnu löytää jonkun elegantin tavan ratkasta toi ongelma.

Laaksosen ehdottaman ratkaisutavan tyylisen ratkaisun löysin myös microsoftin sivuilta, mutta vaikka copy-pastasin sen niin se ei silti toiminut.

tuomas [13.07.2004 09:34:16]

#

Tee looppi.

For I = 1 To 40

    ToggleButton(i).Enabled = bToggleType

Next

Moukka [13.07.2004 10:02:59]

#

Kaunista, mutta ei toimi.

sooda [13.07.2004 12:20:06]

#

Toimii jos niitten nimet on ToggleButton ja on indeksoitu. Mä tekisin ton kyllä

For i = 0 to 39
    ToggleButton(i).Enabled = bToggleType
Next

koska kontrollien indeksointi alkaa yleensä nollasta.

BadSource [13.07.2004 12:36:50]

#

Muuten hyvä, mutta Excel ei tue indeksointia. Siitä oli maininta jo tuolla ylempänä, mikäli sen huomasi lukea.

sooda [13.07.2004 12:53:56]

#

Aijjoo. Noh kannattaisi tehdä sitte

Dim nappula As Control
For Each nappula In Me.Controls
    If Left(nappula.Name, 12) = "ToggleButton" Then nappula.Enabled = bToggleType
Next

Moukka [13.07.2004 13:37:04]

#

Ei toimi tuokaan. Herjaa jo toisella rivillä, että:"Käännösvirhe: Menetelmää tai jäsentä ei löydy"

sooda [13.07.2004 14:02:13]

#

Hm. Kirjoita Me. ja kato onko siinä listassa joka tulee esiin (jos tulee excelissä) onko siinä jotain control, controls tai controlcollection tjsp hommelia

Moukka [13.07.2004 14:09:52]

#

Lista tulee näkyviin, mutta mitään kontrolliin viittaavaa ei sieltä löydy.

sooda [13.07.2004 14:15:41]

#

No sitten ei taida olla muuta tapaa kuin tuo jonka Antti selitti.


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta