› Excel e gli applicativi Microsoft Office › Creare tante textbox quanto è il valore (x3)
-
AutoreArticoli
-
Buondì a tutti voi,
spero possiate aiutarmi con il mio problema..
Ci sarebbe per caso la possibilità di creare le textbox (naturalmente da un'altra userform) inserendo un valore in un imputbox?
Io praticamente ho un userform e qui vorrei che ci sia un pulsante che se cliccato mi apre l'imputbox...qualsiasi valore io scriva mi crea tot textbox. Esempio: clicco sul pulsante, mi si apre l'imputbox, scrivo 5, invio, si apre l'userform con 15 textbox (15 perchè: in una textbox scriverò un valore, nell'altra scriverò la data e nell'altra l'ora). Qualsiasi valore io scriva lo moltiplicherà per 3.
Grazie mille in anticipo per la disponibilità e per qualsiasi aiuto..
Buona giornata a tutti
("Inputbox", non "imputbox")
Il metodo per aggiungere controlli a un For è Controls.Add, cui segue come parametro il nome interno del controllo. Per un textbox devi usare il prog id "Forms.TextBox.1", segue il nome da dare al controllo per recuperarlo poi. Devi anche posizionarlo correttamente sul form.
Questo semplicissimo (e grezzo) esempio posiziona n*3 controlli sul form distanziati da 16 pixel (più o meno la loro altezza):
Private Sub CommandButton1_Click() Dim i As Integer Dim n As Integer i = InputBox("Quanti controlli vuoi creare?") For n = 1 To i * 3 Controls.Add "Forms.TextBox.1", "tb" & n Controls("tb" & n).Move 100, (n - 1) * 18 Next End SubCiao vecchio frac,
grazie per aver risposto 🙂
Scusa l'ignoranza nello scrivere inputbox... gentilmente ti vorrei chiedere una cosa.
La visualizzazione delle textbox va benissimo (grazie mille 🙂 ) ma è possibile averle tipo una accanto all'altra? Non tutte ma tipo 3 alla volta:
txt1 txt2 txt3
txt4 txt5 txt6
.....ecc
Grazie per la disponibilità..
Qual è il punto di avere gusti diversi, se non mostrare che i cervelli lavorano diversamente, che pensiamo diversamente? ( Alan Turing)
Sempre il mare, uomo libero, amerai!
( Charles Baudelaire )Ciao Albatros54,
grazie per l'intervento.. per caso ti ritrovi l'allegato così che lo possa studiare e capire il funzionamento del codice?
Grazie ancora
Albatros è la nostra memoria storica 🙂
è possibile averle tipo una accanto all'altra?
Devi solo posizionarle correttamente: Move vuole una coordinata x e una y per cui puoi giocare a fare le modifiche di questo tipo:
Controls("tb" & n).Move (n - 1) * 30, 10per caso ti ritrovi l'allegato
Purtroppo se Albatros non ha conservato personalmente gli allegati transitati nel vecchio forum, questi non ci sono ormai più (anche perchè venivano comunque cancellati dal sistema ogni sette giorni per motivi di spazio sul server).
Buongiorno,
vecchio frac sei gentilissimo e ti ringrazio!
Solo una cosa, per poter cambiarli di posizione ci devo "giocare" nel ciclo For...Next giusto?
Perchè inserendo la riga che mi hai postato li mette uno accanto all'altro sì, ma tutte..mentre io vorrei che siano uno accanto all'altro ma tre alla volta:
txt1 txt2 txt3
txt4 txt5 txt6
ecc....
Mentre adesso esce in questo modo:
txt1 txt2 txt3 txt4 txt5 txt6 ecc..
Ti ringrazio dell'aiuto e della pazienza!
Allora occorre introdurre il concetto di Step nel ciclo For.
Il For può essere istruito a valorizzare il suo contatore a tot passi alla volta, per cui (ragionando opportunamente sui valori da passare a Move) è possibile fare quello chiedi. Visto che ho un attimo ci penso su e poi ti riscrivo le due righe di esempio.
Ecco qui. Ho commentato così puoi capire meglio cosa modificare:
Option Explicit Private Sub CommandButton1_Click() Dim i As Integer Dim n As Integer Dim m As Integer Dim w As Integer i = InputBox("Quanti controlli vuoi creare?") For n = 1 To i * 3 Step 3 For m = 1 To 3 'agginge un extbox all'userform 'ogni userform avrà nome "tb**" dove gli asterischi 'vengono valorizzati con il proprio numero di ordine 'per riga e per colonna Controls.Add "Forms.TextBox.1", "tb" & n & m 'calcola la larghezza standard di un textbox w = Controls("tb" & n & m).Width 'e lo posiziona per riga e per colonna a gruppi di tre 'prova a variare i valori: '(m - 1) * w + 5 modifica il 5 per lo spazio orizzontale tra i textbox '(n - 1) * 7 + 3 modifica il 7 per lo spazio verticale tra i textbox ' e il 3 per lo scostamento dall'alto Controls("tb" & n & m).Move (m - 1) * w + 5, (n - 1) * 7 + 3 Next Next End Sub -
AutoreArticoli
