objektin lisäys

peetee

Miten lisätään objekti suorituksen aikana. Eli kysyn siis koodivinkkiä, miten voin esim. Commandbuttoniin kirjoittaa koodin joka lisää textbox:in lomakkeeseen. Tarvitsisin Vba -koodia.

6

584

    Vastaukset

    Anonyymi (Kirjaudu / Rekisteröidy)
    5000
    • ...

      Jos tekstiruudun sijoittaa lomakkeelle ja määrittelee sen ensin näkymättömäksi (esim. Teksti1.Visible=FALSE). CommandButton-kontrollissa Teksti1.Visible=TRUE toisi tekstiruudun uudelleen lomakkeelle näkyviin. Samalla tekstiruudun kokoa ja sijaintia voisi tarvittaessa muuttaa?

    • -jk-

      VB6:ssa näin; en tiedä, toimiiko VBA:na.

      Set txtBox1 = Controls.Add("VB.TextBox", "Text1")
      With txtBox1
      .Width = 2000
      .Height = 300
      .Top = 500
      .Left = 50
      .Visible = True
      .Text = "Eka tekstipoksi"
      End With

      Set txtBox2 = Controls.Add("VB.TextBox", "Text2")
      With txtBox2
      .Width = 2000
      .Height = 300
      .Top = 500
      .Left = 2250
      .Visible = True
      .Text = "Toka tekstipoksi"
      End With

      • peetee

        Eipä näytä vba:ssa toimivan.


    • Petri_Petri

      Itse olen tehnyt tuon niin, että olen tehnyt yhden indeksikontrollin formille, koska käsittääkseni ilman sitä ei kontrolleja voi lisätä. Tai se on ainakin helpoin tapa.

      Eli lisää formille TextBox:
      - laita nimeksi mikä tahansa, vaikka MunTekstiKontrolli
      - laita Index-properties nollaksi (jotta se on taulukkokontrolli eli indeksikontrolli)
      - laita kontrollin Visible-properties Falseksi, jotta se ei näy formissa


      Sitten kun haluat ottaa sen käyttöön, niin muuta kontrollin Visible-properties Trueksi.

      Nyt voit myös lisätä TextBoxeja kuinka monta tahansa.
      - Kontrollin lisäys: Load MunTekstiKontrolli(1)
      - Muuta se näkyväksi: MunTekstiKontrolli(1).Visible=True
      - Aseta sille koordinaatit, esim.: MunTekstiKontrolli(1).Top=100:MunTekstiKontrolli(1).Left=500
      - Määritä sen koko, esim.: MunTekstiKontrolli(1).Height=1000:MunTekstiKontrolli(1).Width=2000


      Sama toimii myös muiden kontrollien kohdalla.

      • peetee

        Tuo ei ilmeisesti toimi vba:ssa, koska siinä ei objekteilla ole ominaisuutta index. Vb 6:ssa tuo kyllä toimii.


      • Petri_Petri
        peetee kirjoitti:

        Tuo ei ilmeisesti toimi vba:ssa, koska siinä ei objekteilla ole ominaisuutta index. Vb 6:ssa tuo kyllä toimii.

        Luulin että kysyit sitä VB:stä. En ole paljon tehnyt VBA:lla, mutta täytyihän tuota yrittää.

        Sain sen toimimaan Excelillä. Eli kun olet tehnyt formin (joka alla on nimellä "UserForm1"), niin seuraava ohjelmakoodi lisää aina uuden tekstikontrollin. Se tulee suoraan näkyviin, joten visible-propertiesta ei tarvitse asettaa Trueksi. Alla olevassa esimerkissä uusi TextBox tulee edellisen alle, jotta ne eivät mene päällekkäin. Uuden kontrollin tekstisisällöksi tulee sen Y-koordinaatti (eli TOP-properties).



        Sub TekstikontrollinLisäys()
        'Tämä lisää Excel-formiin uuden tekstiboxin
        'Laitetaan se aina 20 pistettä edellisen alle
        Dim UusiKontrolli As Control
        Static Y

        Set UusiKontrolli = UserForm1.Controls.Add("forms.textbox.1")
        Y = Y 20
        UusiKontrolli.Text = Str$(Y)
        UusiKontrolli.Top = Y

        End Sub


    Ketjusta on poistettu 0 sääntöjenvastaista viestiä.

    Luetuimmat keskustelut

    1. Riikka Purra leikkasi alimmalta tulodesiililtä 15 %

      Muistaako kukaan Riikka Purran kovaäänisen vaalilupauksen ennen eduskuntavaaleja? https://yle.fi/a/74-20221152 "THL o
      Maailman menoa
      149
      4872
    2. Sofia Virta: bänet!

      Matkailuautoilija metsänomistaja puoliso on nyt entisen teeren poikia, ja Sofia tekee comebackin vapaille markkinoille.
      Maailman menoa
      94
      2090
    3. "Suomi voisi ottaa taloudessa oppia Espanjasta"

      "Espanjassa talouspolitiikka on löysempää, mutta velka-aste on kääntynyt jopa laskuun.", pohdiskelee Suomen seuraava pää
      Maailman menoa
      182
      1860
    4. Kokoomus: SDP johtaa kansalaisia harhaan

      (Umpityhmät palstademarit ovat taas uskoneet Lindtmanin höpötykset Espanjasta.) SDP harhaanjohtaa kansalaisia talouspol
      Maailman menoa
      57
      1474
    5. Talousasiantuntija sanoo säästämisestä

      " parin kuukauden tulo on sellainen, joka voi olla vaikka tilillä tai jossain korkorahastossa, eikä se ole tuottohakuine
      Sinkut
      267
      1278
    6. Lieksa tukee kuntoutumista reilusti

      Lieksan sosiaalitoimi käynnistää uuden tukihankkeen – työttömille veneitä hyvinvoinnin edistämiseksi Lieksan sosiaalito
      Lieksa
      81
      1110
    7. Siinäpä jäät

      Punapää kaipaamaan, kun päätän maallisen vaellukseni. Oma oli valintasi. Sillä minä en jaksa enää kovin pitkää tätä. Ole
      Ikävä
      79
      969
    8. Muistele nainen niitä meidän yhteisiä hetkiä

      Miltä ne tuntui? Enkö aina huokunut välittämistä, kiintymystä. Eikö sinulla aina ollut hyvä olo kanssani? Minulla ainaki
      Ikävä
      11
      931
    9. Nato on käytännössä kuollut!

      Puolustusliitto Nato on toki natissut liitoksistaan ennenkin, mutta koskaan aiemmin sen vahvin maa Yhdysvallat ei ole uh
      NATO
      283
      920
    10. Oot mun sielunpuolikas

      Nainen. Harmi vaan että tavattiin väärään aikaan ja synnyttiin tälle planeetalle eri aikaan. 👩‍❤️‍👩❤️
      Ikävä
      44
      852
    Aihe