Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

[Excel] InputBox con inserimento multiplo; si puo?

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] InputBox con inserimento multiplo; si puo?

Postdi antom » 09/09/08 16:04

Ciao a tutti.
Ho una domanda sugli InputBox.
Non ho mai avuto a che fare con questi oggetti e volevo chiedere:
è possibile inserire PIU' form (zone editabili) in uno stesso InputBox?
Ogni dato inserito sarà legato ad una variabile distinta, ma non vorrei fare un InputBox per ogni dato richiesto.
Ho cercato un pò, ma gli esempi che ho visto si riferiscono ad un inserimento per InputBox.

Grazie mille.
Antom
antom
Utente Junior
 
Post: 24
Iscritto il: 07/09/08 09:26

Sponsor
 

Re: [Excel] InputBox con inserimento multiplo

Postdi Tribuno » 09/09/08 21:55

Ciao
per quel che ne so io con Inputbox puoi gestire una variabile per volta. Se hai necessità di gestire più input puoi usare una Userform con tanti Textbox quanti sono i dati richiesti all'utente (nome, cognome, indirzzo, città, ecc.)

Ciao
Tribuno
Avatar utente
Tribuno
Utente Senior
 
Post: 181
Iscritto il: 22/08/08 19:24

Re: [Excel] InputBox con inserimento multiplo

Postdi Anthony47 » 09/09/08 22:26

Si, con l' inputbox puoi ottenere un unico dato alla volta; teoricamente sarebbe possibile chiedere all' utente l' immissione di piu' informazioni separate da un carattere chiave, per poi splittarle via codice, ma non credo che il risultato sia brillante.
Come alternative vedi quali di queste ipotesi ti aggrada di piu':
1) piu' inputbox in successione
2) vai su un foglio (magari normalmente nascosto) dove hai creato anche visivamente un "modulo" con intestazioni e celle da riempire; puoi inserire pulsanti con macro associate tipo Azzera modulo (cancella le celle da compilare, in caso di errore) e Fatto (prende i dati e li sposta nelle celle di destinazione; se il foglio e' protetto salvo le celle da compilare, e nella protezione hai impostato "consenti la selezione delle sole celle non protette" allora il cursore si muovera' solo sulle celle da riempire.
3) Oppure usi una UserForm (questa e' la tecnica piu' professionale)
La userform e' un componente totalmente da progettare, quindi puo' contenere numerosi oggetti al suo interno che poi vanno gestiti da codice vba.

Ti conviene fare qualche esercizio su un file di prova; ad esempio:
-parti da un file nuovo
-apri il vba editor con Alt-F11
-Menu /Inserisci /Userform; ti dovrebbe comparire una form dal titolo Userform1 e la Casella degli strumenti Form.
-cerca tra gli oggetti ("controlli") della casella degli strumenti il simbolo di Casella di testo; cliccalo, vai sulla form, disegna un rettangolo orizzontale, che apparira' bianco su sfondo grigio. Questo oggetto si chiama TextBox1
-ripeti e disegna il TextBox2 e se vuoi altri, prendendo nota del nome.
-sopra ai textbox puo' essere opportuno scrivere qualcosa: cegli l' oggetto Etichetta, disegnala sulla form, cambia la loro scritta che indichi cosa bisogna mettere nel textbox sottostante; questi oggetti si chiamano Label1, Label2, etc, ma probabilmente non necessiteranno di nessuna elaborazione.
-disegna un Pulsante di comando, modificagli il testo in Ok; questo oggetto si chiama CommandButton1
-disegna un secondo pulsante di comando con il testo Azzera; si chiama CommandButton2
-disegna un terzo pulsante con il testo Fine; e' il CommandButton3
-se abiliti la finestra "Proprietà" (con F4) e selezioni qualsiasi oggetto vedrai quali sono le caratteristiche di questo oggetto; molte sono modificabili per cambiare nome, descrizione, caratteristiche, apparenza, comportamento dell' oggetto: non cominciare a farlo adesso altrimenti rischi la saturazione...

E' il momento di passare al codice:
-premi F7 ed entriamo sul modulo codice della form (per tornare alla form, doppioclick sulla scritta Userform1 nella finestra Progetto a sx)
-come prima carrellata, scorri sul drop down menu di sx gli oggetti e confronta sul drop down menu di dx quali eventi puoi gestire; finita la carrellata cancella tutto il codice che ti ha scritto
-al momento gestiremo solo gli eventi Click dei due CommandButton; per questo:
--seleziona CommandButton1 a sx e Click a dx
--completa la macro con queste istruzioni:
Codice: Seleziona tutto
Private Sub CommandButton1_Click()
Sheets(1).Range("A1") = TextBox1.Text
Sheets(1).Range("A2") = TextBox1.Text
End Sub

--ripeti con CommandButton2/click con questo codice
Codice: Seleziona tutto
Private Sub CommandButton2_Click()
TextBox1.Text = ""
TextBox2.Text = ""
End Sub

--ripeti con CommandButton3/Click con questo codice:
Codice: Seleziona tutto
Private Sub CommandButton3_Click()
Me.Hide           'Chiude ma lascia in memoria
'Unload UserForm1 'Chiude e toglie dalla memoria
End Sub


Ovviamente se hai creato piu' di 2 textbox scriverai altre istruzioni che ricalcano quelle dell' esempio. Il concetto e' che il primo pulsante (quello con la scritta Ok) spostera' il contenuto dei textbox nelle celle a tuo piacere (oppure li userai in ulteriori calcoli prima di finire in qualche cella); il secondo (Cancella) cancella invece il contenuto dei textbox, ad esempio in caso di errore; il terzo (Fine) chiude la form ma lascia in memoria oppure scarica anche la memoria.

Ti manca ancora questa macro, che va in un "Modulo standard" di codice (es Modulo1):
Codice: Seleziona tutto
Sub ApriUF1()
UserForm1.Show
End Sub


A questo punto un breve collaudo:
-vai su Foglio1
-lancia la macro ApriUF1
-vedi cosa succede

Per oggi per me puo' bastare; tu puoi continuare esplorando come usare le Proprieta' degli oggetti semplici che abbiamo inserito, quali sono gli altri oggetti disponibili, come puoi eseguire dei controlli sulle sequenze, come azzerare i dati o metterli a valori di default all' apertura della form, etc etc.

E quando sei pronta a lavorare sul tuo vero file, prima di cominciare sul pc e' opportuno che ti fai uno schema di quali controlli ti servono sulla form e di come vuoi che si comportino; poi comincia col disegno della Form, prendendo nota del nome degli oggetti man mano che li crei (lo leggi in testa alla finestra Proprieta', tab Alfabetico); infine passi al codice di gestione Form, basato sulla gestione degli eventi associati al singolo oggetto.

Ti avverto che le form non sono la mia passione, non aspettarti risposte furbe alla domande che farai; non da me.

Ciao.
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13904
Iscritto il: 21/03/06 16:03
Località: Ivrea

[Excel] InputBox con inserimento multiplo

Postdi antom » 10/09/08 16:00

Un grazie commosso per l'attenzione e la precisione nella tua risposta, Anthony74.
Ho seguito passo passo e ho capito come utilizzare quello che mi hai insegnato a mio vantaggio: ottimo maestro!
Non oso immaginare cosa fai con gli argomenti che ti appassionano!

Comunque, questo è il codice legato al primo bottone dichiarato che ho chiamato Avvia Procedura (quello che tu chiami OK):

Codice: Seleziona tutto
Private Sub CommandButton1_Click()

Dim vCodice As String
Dim vFile As String

vCodice = TextBox1.Text
vFile = TextBox2.Text

buildSchedaA vCodice, vFile
End Sub


buildSchedaA risulta essere:

Codice: Seleziona tutto
Dim varA As String
Dim var1 As String
Dim var2 As String
Dim var3 As String
Dim var4 As String

varA = varFile & "_A.xls"
var1 = varFile & "_A_C.xls"
var2 = varFile & "_A_F.xls" 
var3 = varFile & "_A_G.xls"
var4 = varFile & "_A_S.xls"

Workbooks.Open Filename:="C:\mypath\" & varCodice & "\" & varA
Workbooks.Open Filename:="C:\mypath\" & varCodice & "\" & var1
Workbooks.Open Filename:="C:\mypath\" & varCodice & "\" & var2
Workbooks.Open Filename:="C:\mypath\" & varCodice & "\" & var3
Workbooks.Open Filename:="C:\mypath\" & varCodice & "\" & var4

daSchedaC var1, varA
daSchedaF var2, varA
daSchedaG var3, varA
daSchedaS var4, varA


End Sub


Ti ho riportato questa macro perchè ho un quesito da porre a te e ai frequentatori di questo forum:
vorrei poter salvare tutti i file aperti e richiuderli quindi aprire un ulteriore file.
Ho provato con le istruzioni riportate nel link che mi hai suggerito (http://www.pc-facile.com/forum/viewtopic.php?f=26&t=61079) ma non funziona.

Grazie ancora,
antom
antom
Utente Junior
 
Post: 24
Iscritto il: 07/09/08 09:26

Re: [Excel] InputBox con inserimento multiplo

Postdi Anthony47 » 11/09/08 14:28

Bene bene.
Per quanto riguarda la chiusura di tutti i file aperti "eccetto uno", usa una macro come questa:
Codice: Seleziona tutto
Sub closeall()
For Each WB In Workbooks
If WB.Name <> ThisWorkbook.Name Then WB.Close savechanges:=True
Next WB
End Sub

Verranno salvati e chiusi tutti i file aperti eccetto quello dove metti la macro; per aprire un nuovo file, la sintassi e' del tipo
Codice: Seleziona tutto
Workbooks.Open Filename:="C:\Documents and Settings\User_1\Documenti\pippo.xls"

Fai sapere, ciao.
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13904
Iscritto il: 21/03/06 16:03
Località: Ivrea

[Excel] InputBox con inserimento multiplo

Postdi antom » 11/09/08 15:10

Ciao.
Grazie mille.
Avevo già risolto, ma la tua conferma è importante.
Vorrei mettere una piccola macro che salva e chiude i file aperti ma credo sia più utile riportarla in una discussione più appropriata, no?

Ciao,
Antom.
antom
Utente Junior
 
Post: 24
Iscritto il: 07/09/08 09:26


Torna a Applicazioni Office Windows


Topic correlati a "[Excel] InputBox con inserimento multiplo; si puo?":


Chi c’è in linea

Visitano il forum: Nessuno e 5 ospiti