| | Post: 136 | Registrato il: 12/04/2013
| Città: BARI | Età: 34 | Utente Junior | 2016 | | OFFLINE | |
|
21/06/2017 19:29 | |
Ciao ragazzi, sto lavorando a una Userform per l'inserimento di dati.
In realtà è la prima per cui sono molto inesperto ancora.
Praticamente succede che all'apertura tutte le combobox risultano spopolate.
Se però, con un tasto Pulisci Campi richiamo il userform_initalize
allora improvvisamente si popolano tutte le combobox
Dove sbaglio.
Per avviare la Userform uso Dati.Show
Vi allego il file di prova.
Grazie anticipatamente.
https://www.dropbox.com/s/j6j02op9xqqs03p/consulenza.xlsm?dl=0 [Modificato da gionox 21/06/2017 19:31] |
|
| | Post: 3.295 | Registrato il: 21/06/2013
| Città: NAPOLI | Età: 70 | Utente Master | Excel 365 | | ONLINE |
|
21/06/2017 19:41 | |
Con il pulsante non devi richiamare userform _Initialize ma deve "pulire" direttamente tutti i campi.
Alfredo |
| | Post: 136 | Registrato il: 12/04/2013
| Città: BARI | Età: 34 | Utente Junior | 2016 | | OFFLINE | |
|
21/06/2017 20:16 | |
Quindi nella macro che utilizzo per lanciare la Userform al posto di Dati.Show scrivo direttamente Dati.Inalitaze? [Modificato da gionox 21/06/2017 20:16] |
| | Post: 3.296 | Registrato il: 21/06/2013
| Città: NAPOLI | Età: 70 | Utente Master | Excel 365 | | ONLINE |
|
21/06/2017 20:32 | |
No Dati.Show serve per visualizzare la maschera.
Supponiamo (ora non posso vedere il tuo file) che sulla userform ci siano 5 TextBox
con un codice di questo tipo si puliscono.
vb Private Sub CommandButton1_Click()
Dim i as Integer
For i = 1 To 5
Me.Controls("TextBox" & i).Value = ""
Next i
End Sub
[Modificato da alfrimpa 21/06/2017 20:33]
Alfredo |
| | Post: 137 | Registrato il: 12/04/2013
| Città: BARI | Età: 34 | Utente Junior | 2016 | | OFFLINE | |
|
21/06/2017 23:43 | |
Eh, il problema è che le combobox sono spopolate appena si avvia la Userform. Se invece con il pulsante (che è sempre nella Userform) pulisco i campi, allora si popolano |
| | Post: 3.297 | Registrato il: 21/06/2013
| Città: NAPOLI | Età: 70 | Utente Master | Excel 365 | | ONLINE |
|
22/06/2017 08:26 | |
Ma io un esempio di codice te l'ho dato; lo hai provato?
Alfredo |
| | Post: 3.298 | Registrato il: 21/06/2013
| Città: NAPOLI | Età: 70 | Utente Master | Excel 365 | | ONLINE |
|
22/06/2017 09:59 | |
Questa macro associata al pulsante fa quello che hai chiesto
vb Private Sub PUL_CAMPI_Click()
Dim ctrl As Control
For Each ctrl In Me.Controls
If TypeName(ctrl) = "TextBox" Or TypeName(ctrl) = "ComboBox" Then
ctrl.Value = ""
End If
Next ctrl
End Sub
[Modificato da alfrimpa 22/06/2017 10:00]
Alfredo |
| | Post: 138 | Registrato il: 12/04/2013
| Città: BARI | Età: 34 | Utente Junior | 2016 | | OFFLINE | |
|
22/06/2017 11:08 | |
Ti ringrazio per il codice ma non ho capito proprio.
All'avvio della Userform è normale che io debba cliccare il pulsante PUL_CAMPI per iniziare?
La sua funzione era un altra ma sembra che lo debba cliccare per far funzionare la Userform |
| | Post: 3.299 | Registrato il: 21/06/2013
| Città: NAPOLI | Età: 70 | Utente Master | Excel 365 | | ONLINE |
|
22/06/2017 11:30 | |
All'avvio la maschera è sempre vuota.
Anziché fare come dici tu modifica la sub Inserisci così ed elimina il pulsante "Pulisci"; in questo modo quando cliccherai su Inserisci i dati saranno trasferiti sul foglio e la maschera verrà "ripulita" e sarà pronta per un eventuale nuovo inserimento.
vb Private Sub INSERISCI_Click()
Dim emptyRow As Long
Dim d As Date
Dim s As String
Dim ctrl As Control
s = NomeTextBox & " " & CognomeTextBox
With Me
d = .ComboBox1.Text & "/" & _
.ComboBox2.Text & "/" & _
.ComboBox3.Text
End With
Sheets("Riepilogo").Select
'Determine emptyRow
emptyRow = WorksheetFunction.CountA(Range("A:A")) + 1
'Transfer information
Cells(emptyRow, 1).Value = s
Cells(emptyRow, 2).Value = CommessaComboBox.Value
Cells(emptyRow, 3).Value = d
Cells(emptyRow, 4).Value = OreLavorateTextBox.Value
For Each ctrl In Me.Controls
If TypeName(ctrl) = "TextBox" Or TypeName(ctrl) = "ComboBox" Then
ctrl.Value = ""
End If
Next ctrl
End Sub
Non so se era questo quello che volevi. [Modificato da alfrimpa 22/06/2017 11:30]
Alfredo |
| | Post: 139 | Registrato il: 12/04/2013
| Città: BARI | Età: 34 | Utente Junior | 2016 | | OFFLINE | |
|
22/06/2017 15:46 | |
Allora, la mia richiesta lho risolta cosi:
Dati.Show
Call Dati.Userform_Initialize
Il tuo codice va benissimo, lo avrei sicuramente chiesto più in là [Modificato da gionox 22/06/2017 16:07] |
|
|