Domanda Excel 2016: Inserimento dati tramite Userform con Textbox e Combobox

User deleted 23123

Nuovo utente
13 Agosto 2019
16
1
Excel 2020
0
Ciao a tutti!
Ho bisogno del vostro aiuto in quanto vorrei creare una Userform con textbox e combox in modo da inserire i dati sul mio foglio Excel.
Nello specifico ho creato un foglio chiamato "Inserimento dati" dove vengono caricati i dati scritti nella mia Userform.
Fino a li il codice utilizzato funziona, il problema sono le combobox.
Ad esempio aprendo il menù a tendina di "Operazione" vorrei mi apparissero selezionabili "Pagamento" e "Rimborso" e successivamente me li caricasse nel foglio nella specifica casella come gli altri dati premendo il tasto "Inserisci".
Ho creato a questo scopo, forse inutilmente, un foglio chiamato (Combobox) con le varie voci da selezionare.
Inoltre vorrei chiedere se è possibile creare un tasto o qualcosa di automatico che mi apra la Userform.

Ultima cosa, è possibile che la casella di un foglio ricopi in automatico quella di un'altro foglio? Se si quale codice dovrei utlizzare?
Vi allego intanto il file Excel (2016) con il codice insertito.

Grazie mille!
 

Allegati

alfrimpa

VBA Expert
Supermoderatore
Expert
18 Dicembre 2015
20.682
1.713
66
Napoli
2013
398
Per popolare una combobox si può usare del codice di questo tipo (che è assolutamente generale e quindi da adattare).

Visual Basic:
Private Sub UserForm_Initialize()
Dim i As Long
For i = 1 To 10
    With Me.ComboBox1
        .AddItem Sheets("Combobox").Range("b" & i)
    End With
Next i
End Sub
Ossia all'apertura della userform la combobox1 viene popolata con i dati presenti nel range B1:B10 del foglio "Combobox"
 

User deleted 23123

Nuovo utente
13 Agosto 2019
16
1
Excel 2020
0
Per popolare una combobox si può usare del codice di questo tipo (che è assolutamente generale e quindi da adattare).

Visual Basic:
Private Sub UserForm_Initialize()
Dim i As Long
For i = 1 To 10
    With Me.ComboBox1
        .AddItem Sheets("Combobox").Range("b" & i)
    End With
Next i
End Sub
Ossia all'apertura della userform la combobox1 viene popolata con i dati presenti nel range B1:B10 del foglio "Combobox"

Grazie mille della risposta.
Ho inserito il codice indicato e funziona, l'unica cosa è che devo riprodurlo sulle altre due Combobox.
Se ripeto lo stesso codice più mi va come in conflitto.
Come si inseriscono più combobox?

Attualmente sto usando questo codice:
Visual Basic:
Private Sub UserForm_Initialize()
Dim i As Long
For i = 1 To 4
    With Me.cboOperazione
        .AddItem Sheets("Impostazioni").Range("a" & i)
    End With
Next i
End Sub
Vorrei fare lo stesso con:
Visual Basic:
    With Me.cboMezzo

        .AddItem Sheets("Impostazioni").Range("b" & i)
e anche:
Visual Basic:
    With Me.cboTipo

        .AddItem Sheets("Impostazioni").Range("c" & i)
Inoltre mi chiedevo se è possibile personalizzare la lunghezza di "For i = 1 To 4" per ognuna delle Combobox.


Grazie mille!
 

Allegati

alfrimpa

VBA Expert
Supermoderatore
Expert
18 Dicembre 2015
20.682
1.713
66
Napoli
2013
398
Devi semplicemente ripetere quello che hai fatto per la prima combo anche per le altre due.

L'unica cosa che devi variare è il termine finale del ciclo For.
 

User deleted 23123

Nuovo utente
13 Agosto 2019
16
1
Excel 2020
0
Devi semplicemente ripetere quello che hai fatto per la prima combo anche per le altre due.

L'unica cosa che devi variare è il termine finale del ciclo For.
Grazie ancora!
Sono riuscito a creare il file esattamente come volevo, tuttavia manca ancora una cosa.
Ho fatto in modo che i dati inseriti nella Userform vengano copiati nel foglio "inserimento dati".
Nonostante nella colonna dell'importo abbia messo valuta, quando inserisco il numero tramite la Userform me la salva senza.
Inoltre ho fatto in modo che le celle del foglio "inserimento dati" vengano riportate anche nel foglio "ricevuta di pagamento" e anche li vengono riportate le cifre senza valuta e anche la formula della somma in basso non le calcola.
Ho provato ad aggiungere il simbolo € manualmente ma non funziona nemmeno così.
In pratica mi servirebbe che l'importo venga calcolato nella formula della somma.
Allego il file aggiornato.

Grazie mille!
 

Allegati

alfrimpa

VBA Expert
Supermoderatore
Expert
18 Dicembre 2015
20.682
1.713
66
Napoli
2013
398
Ora non ho tempo di guardare il file ma ricorda che le textbox restituiscono sempre delle stringhe anche se ci inserisci dei numeri.

Quando fai il trasferimento sul foglio usa Val() oppure una delle funzioni di conversione come CInt, CLng etc. e vedi cosa succede.
 

User deleted 23123

Nuovo utente
13 Agosto 2019
16
1
Excel 2020
0
Ora non ho tempo di guardare il file ma ricorda che le textbox restituiscono sempre delle stringhe anche se ci inserisci dei numeri.

Quando fai il trasferimento sul foglio usa Val() oppure una delle funzioni di conversione come CInt, CLng etc. e vedi cosa succede.
Alla fine la soluzione più semplice è stata utilizzare il punto al posto della virgola e tutto è andato perfettamente.
Ultima cosa, adesso ho questo codice che mi blocca se non inserisco i dati della Textbox "Utenza".

Visual Basic:
If txtUtenza.Text = "" Then
    MsgBox ("Dati cliente obbligatori!")
    txtUtenza.SetFocus
    Exit Sub
End If
Tuttavia io vorrei me lo chiedesse solo la prima volta in cui inserisco i dati e poi si disattivasse.

Grazie mille!
 

alfrimpa

VBA Expert
Supermoderatore
Expert
18 Dicembre 2015
20.682
1.713
66
Napoli
2013
398
Onestamente non mi è chiara l’ultima richiesta.

Descrivi passo passo la procedura e ciò che deve accadere.
 

User deleted 23123

Nuovo utente
13 Agosto 2019
16
1
Excel 2020
0
Certo ti spiego meglio, in pratica con il codice menzionato sopra se lascio vuoto lo spazio "Utenza" e clicco il pulsante "Inserisci" nella Userform mi appare un avviso bloccandomi. A me va bene ci stia questo avviso con blocco, ma che non sia sempre attivo. Mi basterebbe funzionasse una volta sola 😁
 

alfrimpa

VBA Expert
Supermoderatore
Expert
18 Dicembre 2015
20.682
1.713
66
Napoli
2013
398
Si questo lo avevo capito ma non ne capisco la logica.

Se la compilazione di un campo è obbligatoria non lo deve essere sempre?

Normalmente è questo il modo di ragionare/operare.
 

alfrimpa

VBA Expert
Supermoderatore
Expert
18 Dicembre 2015
20.682
1.713
66
Napoli
2013
398
Io ti consigliere di lasciare le cose come stanno anche perchè il lasciare il campo utenza vuoto sul foglio ti fa correre il rischio che queste istruzioni

Visual Basic:
numriga = Sheets("Inserimento dati").Range("A1").CurrentRegion.Rows.Count
numriga = numriga + 1
non funzionino bene.
 

User deleted 23123

Nuovo utente
13 Agosto 2019
16
1
Excel 2020
0
Il problema è questo, le fatture che può pagarmi ilo stesso cliente possono essere molteplici, mentre i dati relativi alla sua utenza li devo inserire una volta sola.
Come vedrai dal file excel che ti avevo allegato ho una formula che ricopia i dati inseriti da un foglio all'altro mediante la casella di riferimento:

Visual Basic:
='Inserimento dati'!A2
Quindi se nella prima compilazione e inserimento dimentichi di inserire i dati dell'utenza non vengono più trasferiti nell'altro foglio essendo copiati nella riga successiva.
Eventualmente c'è una formula che mi permette di fare la stessa cosa con i dati di un'intera colonna?
Potrebbe essere una soluzione.

Grazie mille!
 

User deleted 23123

Nuovo utente
13 Agosto 2019
16
1
Excel 2020
0
Buongiorno, in pratica alla fine sono riuscito a creare un pò quello che desideravo.
L'unica cosa che mi servirebbe è una formula che ricopi i valori di una cella dal foglio 1 al foglio 2, al momento uso questa:
Visual Basic:
='Inserimento dati'!H2
Io però avrei bisogno che tenga conto di più caselle della stessa colonna H (ad esempio H2, H3, H4, H5..)
E' possibile fare una foruma che si attivi in caso di valore comprendendo più caselle della stessa colonna?
Io ho provato così ma mi da errore:
Visual Basic:
='Inserimento dati'!Ricevuta!H2:H11
Ci vorrebbe tipo una funzione SE.. che se valore vuoto non mi da nulla.. se invece riporto un valore in una delle caselle della colonna H viene attivata la formula.
E' fattibile?

Grazie mille!
 

Sostieni ForumExcel

Aiutaci a sostenere le spese e a mantenere online la community attraverso una libera donazione!