Condividi:        

Help per VBA di excel

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

Help per VBA di excel

Postdi ProbePotter » 06/11/06 22:29

Gentili amici ho una richiesta da porvi. Ho realizzato dal VBA di excel
uno UserForm con pulsante e relativo codice (funziona correttamente)
ma non riesco a farlo aprire/apparire (lo UserFom) quando si apre il file di excel.
Inoltre vorrei se possibile non far vedere il file di excel (relativo ai dati che elabora) all' apertura dello UserForm, semmai dalla barra delle applicazioni con mouse dx ripristina.
Grazie
Avatar utente
ProbePotter
Utente Senior
 
Post: 159
Iscritto il: 20/09/06 18:37

Sponsor
 

Postdi Anthony47 » 07/11/06 01:48

Ciao,
allora, dovresti usare una macro come questa
Codice: Seleziona tutto
Private Sub Workbook_Open()
LaMiaForm.Show
End Sub

che copierai non su un "Modulo" vba ma nell' area codice del workbook:
-apri vba editor con Alt-F11
-sul frame Progetto, a sx, doppioclick sulla voce ThisWorkbook
-copia il codice sul frame di dx che dovrebbe essere tutto bianco.

In questo modo quando apri il tuo file attivi anche la user form.

Ciao,
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Postdi ProbePotter » 07/11/06 22:08

Si, funziona: grazie Anthony47.
Mentre per la seconda parte della domanda ho trovato da solo
la soluzione (parziale) con il Codice:

Application.WindowState = xlMinimized

Da scrivere prima del Codice che mi hai fornito, sempre nel ThisWorkbook, anche se ho notato delle conflittualità. Es all' apertura
del file excel si riduce ad icona (Minimized appunto), ma con il file
anche lo UserForm (cliccando su l' icona lo UserForm si apre regolarmente
ma non è l' effetto che volevo). Ci debbo lavorare sopra.
CMQ grazie di nuovo, Anthony47.
Avatar utente
ProbePotter
Utente Senior
 
Post: 159
Iscritto il: 20/09/06 18:37

Postdi Anthony47 » 08/11/06 00:40

Invece del Minimized potresti inserire nel tuo file un foglio vuoto, o con scritte "strategiche" tipo "attendere, elaborazione in corso", tenerlo normalmente nascosto (con Sheets("FoglioCivetta").Visible = False) e aprirlo durante l' esecuzione della macro con:
Codice: Seleziona tutto
Sheets("FoglioCivetta").Visible = True
Sheets("FoglioCivetta).Activate


Ciao,
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Postdi ProbePotter » 12/11/06 16:01

Ringrazio, per le informazioni ricevute. Ora ho un' altra richiesta da sottoporvi. Creando una lista di cose con excel es. da B2 a B20, ora
vorrei con VB di excel creare uno UserForm con due finestre una
superiore dove inserendo il nome di un' oggetto nella lista (da B2 a B20)
con il pulsante relativo: Cerca, nella seconda finestra apparirà il
nome dell' oggetto selezionato.
Vi ringrazio anticipatamente per l'aiuto.
Avatar utente
ProbePotter
Utente Senior
 
Post: 159
Iscritto il: 20/09/06 18:37

Postdi Anthony47 » 12/11/06 19:30

Creando una lista di cose con excel es. da B2 a B20, ora
vorrei con VB di excel creare uno UserForm con due finestre una
superiore dove inserendo il nome di un' oggetto nella lista (da B2 a B20)
con il pulsante relativo: Cerca, nella seconda finestra apparirà il
nome dell' oggetto selezionato.


Per capire cosa si puo' fare, che tipo di oggetto/informazione ci sara' in B2:B20?

Ciao,
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Postdi ProbePotter » 13/11/06 06:55

Ciao Anthony47, grazie per aver risposto. Nella lista
in B2:B20 ci sono parole di testo es. nominativo ditte,
con il relativo indirizzo.
Avatar utente
ProbePotter
Utente Senior
 
Post: 159
Iscritto il: 20/09/06 18:37

Postdi Alexsandra » 13/11/06 08:37

Usa un listbox.
nell'evento Private Sub UserForm_Activate() lo carichi con un valore (Nome ditta) scorrendo il tuo intervallo con un .aditem
metti dei textbox per gli altri dati, con la label sopra al box per vedere gli altri dati.
per vederli usa l'evento Private Sub ListBox1_Click() tramite la funzione.ListIndex ne calcoli la posizione e il n° di riga o colonna dove stanno i dati.

E' abbastanza semplice e molto pratico e veloce
- Il primo fondamento della sicurezza non e' la tecnologia, ma l'attitudine mentale.

Win7 + Office 2003 Ita
Avatar utente
Alexsandra
Utente Senior
 
Post: 2358
Iscritto il: 09/01/06 20:31

Postdi ProbePotter » 13/11/06 14:18

Ciao Alexandra, grazie per aver risposto. Sinceramente
non ci ho capito molto, ma hai dato il modo su cui riflettere
e lavorarci su. Probabilmente e se vorrete, avrò ancora
bisogno di voi, per la parte codici, sia dello UserForm che
del Modulo1.
Grazie ancora.
Avatar utente
ProbePotter
Utente Senior
 
Post: 159
Iscritto il: 20/09/06 18:37

Postdi Alexsandra » 14/11/06 08:41

potrebbe essere così

http://img224.imageshack.us/img224/4388/anagch6.jpg
partenza:
Codice: Seleziona tutto
Private Sub UserForm_Activate() 'partenza
OptionButton1 = True
OptionButton2 = False
 ComboBox1.AddItem "Buono"
 ComboBox1.AddItem "Medio"
 ComboBox1.AddItem "Pessimo"
 j = ComboBox1.ListIndex + 1
 ComboBox2.Locked = True
End Sub
essendo optionbutton1=TRUE allora parte subito la relativa routine
Codice: Seleziona tutto
Private Sub OptionButton1_Click()                  'filtro solo i clienti
If OptionButton1 = True Then
If ListBox1.ListCount >= 1 Then ListBox1.Clear
i = 2
Do Until Sheets("clienti").Cells(i, 2).Value = ""
  With Sheets("clienti")
elem = .Cells(i, 2).Value
End With
 ListBox1.AddItem elem
 i = i + 1
Loop
End If
ComboBox2.Locked = True
cancella
End Sub
per darti un'idea il foglio "Clienti" è così

http://img146.imageshack.us/img146/9855 ... clijx7.jpg

in pratica all'avvio carichi subito i clienti, poi puoi filtrare i fornitori col button1, ma a te interessa di più il codice per caricare il listbox, quando fai clik sopra un nominativo(a questo punto del codice hai solo il list caricato) si popolano i vari box, per far questo devi mettere questo codice
Codice: Seleziona tutto
Private Sub ListBox1_Click()
If OptionButton1 = True Then
p = ListBox1.ListIndex + 2
vedi
End If
If OptionButton2 = True Then
p = ListBox1.ListIndex + 150
vedi
End If
End Sub
la routine "Vedi" è così
Codice: Seleziona tutto
Private Sub vedi() 'mostro tutti i campi al click sul listbox
TextBox1.Text = Sheets("clienti").Cells(p, 1)          'cod
TextBox2.Text = Sheets("clienti").Cells(p, 2)          'rag.socilae
TextBox3.Text = Sheets("clienti").Cells(p, 3)          'indirizzo
TextBox4.Text = Sheets("clienti").Cells(p, 4)          'cap
TextBox5.Text = Sheets("clienti").Cells(p, 5)          'città
TextBox6.Text = Sheets("clienti").Cells(p, 6)          'ptovincia
etc.......
(potresti farlo con un loop, ma così in un prog. vasto puoi sempre controllare l'esattezza del n° di box col riferimento di riga (p)
PS. ad inizio modulo devi dichiarare le variabili Public
Codice: Seleziona tutto
Public p As Integer, i As Long
altrimenti ti rimanda errore.
potresti togliere alla partenza l'operazione che faccio io col optionbutton e inserire direttamente il codice della routine
Private Sub OptionButton1_Click() togliendo ogni riferimento agli optionbutton. Ti ho scelto questo codice un pò complicato
con optionbutton e combobox, così puoi vederti anche altre funzioni che puoi fare con vba

prova
- Il primo fondamento della sicurezza non e' la tecnologia, ma l'attitudine mentale.

Win7 + Office 2003 Ita
Avatar utente
Alexsandra
Utente Senior
 
Post: 2358
Iscritto il: 09/01/06 20:31

Postdi ProbePotter » 15/11/06 07:11

Lo proverò senz' altro, appena trovo un pò di tempo...
Grazie a voi tutti per la cortesia e disponibilità.
Avatar utente
ProbePotter
Utente Senior
 
Post: 159
Iscritto il: 20/09/06 18:37


Torna a Applicazioni Office Windows


Topic correlati a "Help per VBA di excel":


Chi c’è in linea

Visitano il forum: Nessuno e 38 ospiti