Condividi:        

[Excel]: Visualizzare TextBox in Userform

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

[Excel]: Visualizzare TextBox in Userform

Postdi fefo » 17/07/06 09:35

Buon giorno. Una domanda da principiante. Ho creato uno Userform sul quale compare una textbox in cui inserire un n° da 1 a 5. Questo numero mi serve per visualizzare da 1 a 5 textbox sullo stesso userf. Ho gestito la cosa con degli if, ma il sistema mi piace poco, in vista di miglioramenti futuri. E' possibile "numerare" le textbox (es txt_1, txt_2,..) e visualizzarle con un ciclo (Es for i = 1 to n txt_i.visible=true)? Se sì, come posso fare? Grazie per l'attenzione!
fefo
Newbie
 
Post: 6
Iscritto il: 14/07/06 15:30

Sponsor
 

Postdi patrix966 » 17/07/06 17:21

Ciao, sposto nella sezione competente ;)
Avatar utente
patrix966
Moderatore
 
Post: 2470
Iscritto il: 05/10/05 20:36
Località: Teramo

Postdi Alexsandra » 17/07/06 18:19

Quando crei un box in una Userform per default ti riporta il nome TextBox1 e man mano che inserisci degli altri ti cambia il n° finale puoi fare così
Codice: Seleziona tutto
Private Sub UserForm_Activate()
TextBox2.Visible = False
TextBox3.Visible = False
'etc......Nascondi i box
 End Sub
e poi questa routine
Codice: Seleziona tutto
Private Sub TextBox1_Change()
TextBox2.Visible = True
TextBox3.Visible = True
'etc......e li visualizzi
End Sub

Quando lanci la macro ti compare solo il TextBox 1 appena digiti qualcosa al suo interno ti compaiono gli altri

PS. Quanti box devi far comparire?
Avatar utente
Alexsandra
Utente Senior
 
Post: 2358
Iscritto il: 09/01/06 20:31

Postdi fefo » 18/07/06 07:22

Grazie per avermi spostato, ho fatto un po' di confusione.
In realtà, io ho creato 5 Textbox, ma vorrei renderne visibili solo alcune, in funzione di un numero che chiedo all'inizio..Ad es. io chiedo "Quanti partecipanti?" Se la risposta è 3 vorrei visualizzare solo 3 Textbox, per inserirne i nomi. Per il momento la cosa funziona con un un if
Codice: Seleziona tutto
if n = 2 then
textbox1.visible=true
textbox2.visible=true
elseif n=3 then...

Però non mi piace...si può fare con un ciclo tipo
for i= 1 to n
textboxi.visible=true?
Grazie in anticipo
fefo
Newbie
 
Post: 6
Iscritto il: 14/07/06 15:30

Postdi cassioli » 24/07/06 08:29

fefo ha scritto:Grazie per avermi spostato, ho fatto un po' di confusione.
In realtà, io ho creato 5 Textbox, ma vorrei renderne visibili solo alcune, in funzione di un numero che chiedo all'inizio..Ad es. io chiedo "Quanti partecipanti?" Se la risposta è 3 vorrei visualizzare solo 3 Textbox, per inserirne i nomi. Per il momento la cosa funziona con un un if
Codice: Seleziona tutto
if n = 2 then
textbox1.visible=true
textbox2.visible=true
elseif n=3 then...

Però non mi piace...si può fare con un ciclo tipo
for i= 1 to n
textboxi.visible=true?
Grazie in anticipo

prova se ti accetta un array di controlli:
textbox(i)
cassioli
Utente Senior
 
Post: 1014
Iscritto il: 05/03/04 11:02

Postdi cassioli » 24/07/06 08:37

ah, no, VBA non accetta array di controlli.

Pero' puoi leggere da programma i nomi dei controlli... cosi' un tizio ha implementato questa procedura: ;)

http://www.vbforums.com/showthread.php?t=275864

C'e' da studiarsela un po'.... Non so se vale la pena per 5 etichette.
cassioli
Utente Senior
 
Post: 1014
Iscritto il: 05/03/04 11:02

Postdi fefo » 24/07/06 10:26

Grazie mille.
Proverò a capire come funziona e vi farò sapere. ;)
Ciao
Federico
fefo
Newbie
 
Post: 6
Iscritto il: 14/07/06 15:30

Postdi cassioli » 24/07/06 12:09

Il codice da mettere in una form che contiene N textbox, piu' una di nome "number" che indica quante ne devono essere visibili e un bottone VAI collegato a VAI_CLICK:

Codice: Seleziona tutto
Private Sub Vai_Click()
Call test
End Sub

Sub test()
For i = 1 To Val(Numero.Text)
    TextBoxVisible (i)
Next
End Sub

Sub TextBoxVisible(number As Integer)
Dim ctlFormControl As Control

For Each ctlFormControl In MiaForm.Controls
     If UCase(Mid$(ctlFormControl.Name, 1, 7)) = "TEXTBOX" Then
            ctlFormControl.Visible = 0
         If Mid$(ctlFormControl.Name, 8, 1) <= number Then
            ctlFormControl.Visible = 1
         End If
        Debug.Print "Mostro "; number
     End If
Next
End Sub
cassioli
Utente Senior
 
Post: 1014
Iscritto il: 05/03/04 11:02

Postdi cassioli » 24/07/06 12:19

Per rendere superfluo il pulsante:

Codice: Seleziona tutto
Private Sub Numero_Change()
    Call test
End Sub
cassioli
Utente Senior
 
Post: 1014
Iscritto il: 05/03/04 11:02

Postdi fefo » 26/07/06 14:09

Grazie, era proprio quello che mi serviva! :)
fefo
Newbie
 
Post: 6
Iscritto il: 14/07/06 15:30


Torna a Applicazioni Office Windows


Topic correlati a "[Excel]: Visualizzare TextBox in Userform":


Chi c’è in linea

Visitano il forum: Nessuno e 86 ospiti