Pagina precedente | 1 | Pagina successiva
Vota | Stampa | Notifica email    
Autore

Apertura Userform

Ultimo Aggiornamento: 22/06/2017 15:46
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
OFFLINE
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
OFFLINE
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
OFFLINE
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
OFFLINE
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
OFFLINE
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]
Vota:
Amministra Discussione: | Chiudi | Sposta | Cancella | Modifica | Notifica email Pagina precedente | 1 | Pagina successiva
Nuova Discussione
 | 
Rispondi
Cerca nel forum
Tag discussione
Discussioni Simili   [vedi tutte]
Feed | Forum | Bacheca | Album | Utenti | Cerca | Login | Registrati | Amministra
Tutti gli orari sono GMT+01:00. Adesso sono le 11:15. Versione: Stampabile | Mobile | Regolamento | Privacy
FreeForumZone [v.6.1] - Copyright © 2000-2024 FFZ srl - www.freeforumzone.com