Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

Tasti cliccabili e altro

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

Re: Tasti cliccabili e altro

Postdi peppo55 » 01/10/13 10:07

Ciao JanaK

a mio parere, le caselle di testo dell'userform (per l'nserimento di un nuovo film) devono essere sostituite con caselle combinate con possibilità di aggiunta di nuove voci nei vari elenchi. Per quanto riguarda la ricerca, impostndo più criteri, forse è meglio usare una tabella pivot.
peppo

Excel 2010
peppo55
Utente Senior
 
Post: 154
Iscritto il: 30/09/12 13:51

Sponsor
 

Re: Tasti cliccabili e altro

Postdi ricky53 » 01/10/13 10:11

Ciao,
i nuovi dati vanno scritti sempre dopo l'ultima riga contente valori.
per individuare la prima riga utile utilizza il seguente codice
Codice: Seleziona tutto
UR = Sheets("Foglio1").Range("A" & Rows.Count).End(xlUp).Row + 1


Ho ipotizzato che i tuoi dati, scritti nel "Foglio1" inizino a partire dalla colonna "A" in caso cambia "A" con ".."


Peppo: verissimo, avevo inizialmente suggerito di utilizzare anche le "ComboBox"

Le pivot si vanno bene però, a mio avviso, è preferibile mantenere la strada della userform con codice opportuno ... per il momento acquisiamo i dati dalla form
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W7; Office 2003-10-13-16
Avatar utente
ricky53
Utente Senior
 
Post: 4223
Iscritto il: 11/04/09 19:29
Località: Italia

Re: Tasti cliccabili e altro

Postdi JanaK » 01/10/13 10:13

Cosa sono le caselle combinate e cosa sono le tabelle pivot?
Windows 8 - Office 2013
Intel Core i7 4770K CPU @ 3,50GHz + Corsair Hydro Series H100i Extreme Performance CPU Cooler
SSD Corsair Force Series GS 240GB
ATI Radeon HD 7970 3GB DDR5
RAM Corsair 16GB DDR3
Case Corsair Graphite Series 600T
JanaK
Utente Junior
 
Post: 32
Iscritto il: 30/09/13 09:24

Re: Tasti cliccabili e altro

Postdi ricky53 » 01/10/13 10:37

Ciao,
sono controlli presenti nella "Casella degli strumenti", tu hai già utilizzato le "Caselle di testo" (TextBox") ... comunque la guida e google ...

Le pivot sono degli strumenti potenti che elaborano i dati in vari modi e sono molto utili ... vale quanto scritto sopra
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W7; Office 2003-10-13-16
Avatar utente
ricky53
Utente Senior
 
Post: 4223
Iscritto il: 11/04/09 19:29
Località: Italia

Re: Tasti cliccabili e altro

Postdi JanaK » 01/10/13 12:04

Ho inserito quella riga di codice

Mi da questo errore

Immagine
Windows 8 - Office 2013
Intel Core i7 4770K CPU @ 3,50GHz + Corsair Hydro Series H100i Extreme Performance CPU Cooler
SSD Corsair Force Series GS 240GB
ATI Radeon HD 7970 3GB DDR5
RAM Corsair 16GB DDR3
Case Corsair Graphite Series 600T
JanaK
Utente Junior
 
Post: 32
Iscritto il: 30/09/13 09:24

Re: Tasti cliccabili e altro

Postdi ricky53 » 01/10/13 12:38

Ciao,
su quale istruzione?
Quella che ti ho indicato io?

Il foglio che nome ha?
L'errore "significa" che il nome del foglio non è quello scritto nell'istruzione ...
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W7; Office 2003-10-13-16
Avatar utente
ricky53
Utente Senior
 
Post: 4223
Iscritto il: 11/04/09 19:29
Località: Italia

Re: Tasti cliccabili e altro

Postdi JanaK » 01/10/13 12:49

Si vede nell' immagine :

UR = Sheets("Foglio1").Range("A" & Rows.Count).End(xlUp).Row + 1

Il foglio si chiama Videoteca e VBA lo indica come Foglio 1 (Videoteca)
Windows 8 - Office 2013
Intel Core i7 4770K CPU @ 3,50GHz + Corsair Hydro Series H100i Extreme Performance CPU Cooler
SSD Corsair Force Series GS 240GB
ATI Radeon HD 7970 3GB DDR5
RAM Corsair 16GB DDR3
Case Corsair Graphite Series 600T
JanaK
Utente Junior
 
Post: 32
Iscritto il: 30/09/13 09:24

Re: Tasti cliccabili e altro

Postdi ricky53 » 01/10/13 13:44

Quando il codice va in errore fai "Click" su "Debug" e cerca di capire l'erore a cosa è dovuto, si possono vedere i valori assunti dalle variabili e ... con il tempo imparerai molto.

Quando sei sul foglio excel che nome vedi per il foglio.
Nel codice devi riportare quello.

Tu hai visto i nomi nell'editor del VB ed il nome da riportare è quello tra parentesi (che vanno omesse).
Nel tuo caso "Videoteca".
Cambia il codice e ...
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W7; Office 2003-10-13-16
Avatar utente
ricky53
Utente Senior
 
Post: 4223
Iscritto il: 11/04/09 19:29
Località: Italia

Re: Tasti cliccabili e altro

Postdi JanaK » 01/10/13 14:01

e diciamo che funziona.

Ho incorporato quella riga in una macro registrata giusto per vedere cosa fa quell' istruzione, perchè senza niente altro non fa nulla, ma almeno ora non mi da errore (cambiando appunto Foglio1 in Videoteca)
Windows 8 - Office 2013
Intel Core i7 4770K CPU @ 3,50GHz + Corsair Hydro Series H100i Extreme Performance CPU Cooler
SSD Corsair Force Series GS 240GB
ATI Radeon HD 7970 3GB DDR5
RAM Corsair 16GB DDR3
Case Corsair Graphite Series 600T
JanaK
Utente Junior
 
Post: 32
Iscritto il: 30/09/13 09:24

Re: Tasti cliccabili e altro

Postdi JanaK » 01/10/13 14:16

Risultato

Prima
Immagine

Macroprova
Immagine

Dopo
Immagine

questa è solo una prova ... però come si può vedere dalle immagini Prima e Dopo:

la mia macro fa riferimento sempre a quelle celle, quindi anche ripetendola non viene aggiunto nulla in coda ma il tutto viene sostituito.

Assodato che
Codice: Seleziona tutto
UR = Sheets("Videoteca").Range("A" & Rows.Count).End(xlUp).Row + 1
si posiziona sulla prima riga vuota (la 2478), qual' è l' istruzione per far leggere quanto digitato nel campo Titolo della UserForm e farlo scrivere nella sua esatta posizione (B2478)?
Saputo questo, di conseguenza la stessa istruzione varrà per tutti gli altri campi della UserForm, vero?
Windows 8 - Office 2013
Intel Core i7 4770K CPU @ 3,50GHz + Corsair Hydro Series H100i Extreme Performance CPU Cooler
SSD Corsair Force Series GS 240GB
ATI Radeon HD 7970 3GB DDR5
RAM Corsair 16GB DDR3
Case Corsair Graphite Series 600T
JanaK
Utente Junior
 
Post: 32
Iscritto il: 30/09/13 09:24

Re: Tasti cliccabili e altro

Postdi ricky53 » 01/10/13 14:22

Ciao,
Codice: Seleziona tutto
Range("B" & UR).Value = UserForm1.TextBox1.Value


Ho ipotizzato che la tua TextBox fosse la n. "1" cambia e ... scrivi anche il codice per le altre TextBox o ComboBox


ATTENZIONE: Il registratore di macro è molto utile ma produce codice per ogni azione che fai sul foglio e molto di questo codice va cancellato e tanto va cambiato/adattato.
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W7; Office 2003-10-13-16
Avatar utente
ricky53
Utente Senior
 
Post: 4223
Iscritto il: 11/04/09 19:29
Località: Italia

Re: Tasti cliccabili e altro

Postdi JanaK » 01/10/13 14:35

Un pò alla volta arriverò a (quasi) tutto, una volta ottenuto un piccolo risultato con le TextBox proverò anche le ComboBox che sembrano piuttosto intriganti ... per ora grazie al vostro aiuto sto facendo un pò di pratica, intanto ho scaricato ed iniziato a leggere alcune guide e ho la testa che vortica :)

Per comodità ho chiamato ogni cella della UserForm in questo modo (così non mi confonderò)
txtID, txtTitolo, txtInterprete1 ecc ...

questa riga
Codice: Seleziona tutto
Range("B" & UR).Value = UserForm1.TextBox1.Value

cosa fa esattamente?

stabilisce che il valore della cella B dell' Ultima Riga (UR) è uguale al contenuto del campo Titolo (in questo caso) della UserForm?
Windows 8 - Office 2013
Intel Core i7 4770K CPU @ 3,50GHz + Corsair Hydro Series H100i Extreme Performance CPU Cooler
SSD Corsair Force Series GS 240GB
ATI Radeon HD 7970 3GB DDR5
RAM Corsair 16GB DDR3
Case Corsair Graphite Series 600T
JanaK
Utente Junior
 
Post: 32
Iscritto il: 30/09/13 09:24

Re: Tasti cliccabili e altro

Postdi Anthony47 » 01/10/13 14:49

Perdonate l' intromissione; non voglio destabilizzare la discussione ma solo suggerire un approccio "stop gap".
Cioe' mentre lavori alla versione 2.0, che certamente ti dara' belle soddisfazioni, mi permetto di suggerire un aggiornamento alla versione attuale, e ottenete cosi' un versione 1.1 intermedia...

Innanzitutto puoi smettere di inserire nella riga giusta le righe aggiuntive: ti basta inserirle in testa, in coda, o in qualsiasi altra posizione e poi ordinare la tabella per il criterio che vuoi.
Per l' ordinamento, puoi registrare N macro mentre fai questa operazione usando criteri diversi (es Ordinamento per Titolo; poi Ordinamento per Codice; poi Ordinamento per posizione; poi...).
Ottenute le N macro puoi associarle a N pulsanti che inserisci su Riga 1 (quella con le intestazioni, che rimane sempre visibile) nelle colonne per cui la macro esegue l' ordinamento (quindi, nella riga B1 metti il pulsante linkato alla macro "Ordina per Titolo").
Per registrare una macro:
-avvia il registratore di macro, prendi nota del nome della macro (o scrivi tu il nome che preferisci), esegui diligentemente la selezione di tutte le colonne della tua tabella e l' ordinamento per il/i criterio/i che ti interessa/ano, seleziona la Cella A1, ferma la registrazione. Ricorda che l' ordinamento modifica la posizione delle righe nelle colonne selezionate; quindi se per assurdo selezioni solo la colonna Titolo (e non tutte le colonne della tabella) ti troverai con la colonna Ordinata ma la tabella "sconfusa" e quindi inutilizzabile.

Per assegnare la macro a un pulsante:
-disegna un Pulsante (la forma piu' semplice e' quella presente negli strumenti "Modulo"); ti verra' subito chiesto a quale macro vuoi abbinarlo, sceglila dall' elenco che ti presenta.

Excel inoltre contiene di suo una form per popolare tabelle, il cosiddetto Modulo; in XL2003 lo trovi su Menu /Dati /Modulo; per XL2007 e superiori e' leggermente piu' lungo da spiegare. Puoi anche fare ricerche usando il pulsante "Criteri" per impostare chiavi di ricerca sui singoli campi, cancellare record, modificare record esistenti.

Insomma, potrebbe essere un decoroso passo avanti mentre sudi per la 2.0...

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: 13892
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Tasti cliccabili e altro

Postdi ricky53 » 01/10/13 14:50

Prima leggi quanto ti ha scritto Anthony.



L'istruzione scrive in "B..." il contenuto della TexTBox1

Mi fa piacere che tu ti stia dando "da fare" così tanto ... Vai avanti così. OTTIMO !!!

Ci trovi QUI pronti per aiutarti.
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W7; Office 2003-10-13-16
Avatar utente
ricky53
Utente Senior
 
Post: 4223
Iscritto il: 11/04/09 19:29
Località: Italia

Re: Tasti cliccabili e altro

Postdi JanaK » 01/10/13 15:18

Anthony47 ha scritto:Innanzitutto puoi smettere di inserire nella riga giusta le righe aggiuntive: ti basta inserirle in testa, in coda, o in qualsiasi altra posizione e poi ordinare la tabella per il criterio che vuoi


Ciao, grazie per l' intervento ... al momento sono un quaderno con moltissime pagine bianche e alcune piene di cose a caso, quindi qualsiasi intromissione del genere è più che gradita.

In effetti pensandoci, una volta deciso che il sort è l' unica strada percorribile (o perlomeno, la via più semplice), non c' è motivo di focalizzarsi su una specifica riga, ma prendere la prima vuota mi era sembrata la soluzione più ovvia.

Sul resto ... mmmh lo devo digerire ... al momento ho troppe cose in cottura e quasi niente di pronto :)

Ma ci ritornerò, grazie.
Windows 8 - Office 2013
Intel Core i7 4770K CPU @ 3,50GHz + Corsair Hydro Series H100i Extreme Performance CPU Cooler
SSD Corsair Force Series GS 240GB
ATI Radeon HD 7970 3GB DDR5
RAM Corsair 16GB DDR3
Case Corsair Graphite Series 600T
JanaK
Utente Junior
 
Post: 32
Iscritto il: 30/09/13 09:24

Re: Tasti cliccabili e altro

Postdi JanaK » 01/10/13 18:59

OK, questa parte di codice sembra funzionare ... qualsiasi campo sia compilato, viene scritto nella cella corretta.

Immagine

A questo punto, una volta scritta la riga (tutta o in parte deve essere sempre considerata piena se Titolo contiene del testo : si può condizionare?) bisogna che le celle della Form siano "pulite" e che sia pronta per una nuova immissione di testo.

Come si fa?

A proposito della condizione di cui sopra, questo codice andrebbe bene?

If Form1testoTitolo.value = "" Then
MsgBox "Manca Titolo"
Exit Sub
End If
Windows 8 - Office 2013
Intel Core i7 4770K CPU @ 3,50GHz + Corsair Hydro Series H100i Extreme Performance CPU Cooler
SSD Corsair Force Series GS 240GB
ATI Radeon HD 7970 3GB DDR5
RAM Corsair 16GB DDR3
Case Corsair Graphite Series 600T
JanaK
Utente Junior
 
Post: 32
Iscritto il: 30/09/13 09:24

Re: Tasti cliccabili e altro

Postdi JanaK » 01/10/13 21:06

Googlando ho trovato qualcosa che poteva servirmi. Ho pasticciato un pò, cambiato etichette, aggiunto un pò di cosine, è venuto fuori questo, che è, a mio parere, qualcosa su cui lavorare seriamente, per la funzione di ricerca. Domani cercherò di integrare il tutto nella maschera iniziale ... poi, mangiando vien sempre più fame :P

Codice: Seleziona tutto
Private Sub cmd_GENERE_Click()

k = 0
ActiveSheet.UsedRange.Select
R = ActiveSheet.UsedRange.Rows.Count
For I = 2 To R
If Range("M" & I) <> cmb_GENERE Then
Range("A" & I).Select
Selection.EntireRow.Hidden = True
Else
k = k + 1
End If
Next

If k = 0 Then
MsgBox "NESSUN FILM"
End If

End Sub

Private Sub cmd_ESCI_Click()

Form2.Hide

End Sub

Private Sub cmd_GEN_TIPO_Click()

k = 0
ActiveSheet.UsedRange.Select
R = ActiveSheet.UsedRange.Rows.Count
For I = 2 To R
If Range("J" & I) = cmb_TIPO And Range("M" & I) = cmb_GENERE Then
k = k + 1
Else
Range("A" & I).Select
Selection.EntireRow.Hidden = True
End If
Next

If k = 0 Then
MsgBox "NESSUN FILM"
End If
End Sub

Private Sub cmd_RIPRISTINA_Click()

ActiveSheet.UsedRange.Select
R = ActiveSheet.UsedRange.Rows.Count
Range("A1" & ":" & "D" & R).Select
Selection.EntireRow.Hidden = False
Range("A1").Select
cmb_GENERE = ""
cmb_TIPO = ""

End Sub

Private Sub cmd_TIPO_Click()

k = 0
ActiveSheet.UsedRange.Select
R = ActiveSheet.UsedRange.Rows.Count
For I = 2 To R
If Range("J" & I) <> cmb_TIPO Then
Range("A" & I).Select
Selection.EntireRow.Hidden = True
Else
k = k + 1
End If
Next

If k = 0 Then
MsgBox "NESSUN FILM"
End If

End Sub

Private Sub UserForm_Activate()

Range("A1").Select
cmb_GENERE.AddItem "Animazione"
cmb_GENERE.AddItem "Avventura"
cmb_GENERE.AddItem "Azione"
cmb_GENERE.AddItem "Cabaret"
cmb_GENERE.AddItem "Comico"
cmb_GENERE.AddItem "Commedia"
cmb_GENERE.AddItem "Documentario"
cmb_GENERE.AddItem "Drammatico"
cmb_GENERE.AddItem "DVD Game"
cmb_GENERE.AddItem "Fantascienza"
cmb_GENERE.AddItem "Fantastico"
cmb_GENERE.AddItem "Fantasy"
cmb_GENERE.AddItem "Grottescoco"
cmb_GENERE.AddItem "Guerra"
cmb_GENERE.AddItem "Horror"
cmb_GENERE.AddItem "Musica"
cmb_GENERE.AddItem "Musical"
cmb_GENERE.AddItem "Noir"
cmb_GENERE.AddItem "Poliziesco"
cmb_GENERE.AddItem "Sentimentale"
cmb_GENERE.AddItem "Storico"
cmb_GENERE.AddItem "Thriller"
cmb_GENERE.AddItem "Western"
cmb_GENERE.AddItem ""

cmb_TIPO.AddItem "DVD"
cmb_TIPO.AddItem "2DVD"
cmb_TIPO.AddItem "3DVD"
cmb_TIPO.AddItem "4DVD"
cmb_TIPO.AddItem "5DVD"
cmb_TIPO.AddItem "6DVD"
cmb_TIPO.AddItem "DVD M"
cmb_TIPO.AddItem "2DVD M"
cmb_TIPO.AddItem "3DVD M"
cmb_TIPO.AddItem "4DVD M"
cmb_TIPO.AddItem "5DVD M"
cmb_TIPO.AddItem "6DVD M"
cmb_TIPO.AddItem "BR"
cmb_TIPO.AddItem "BR M"
cmb_TIPO.AddItem "2BR M"
cmb_TIPO.AddItem "-"
cmb_TIPO.AddItem ""

End Sub
Windows 8 - Office 2013
Intel Core i7 4770K CPU @ 3,50GHz + Corsair Hydro Series H100i Extreme Performance CPU Cooler
SSD Corsair Force Series GS 240GB
ATI Radeon HD 7970 3GB DDR5
RAM Corsair 16GB DDR3
Case Corsair Graphite Series 600T
JanaK
Utente Junior
 
Post: 32
Iscritto il: 30/09/13 09:24

Re: Tasti cliccabili e altro

Postdi peppo55 » 01/10/13 23:07

Ciao JanaK

la combobox posta sull'userform può prendere i dati direttamente da un elenco inserito in una colonna di un foglio.
L'elenco (esempio Attori) aumenterà in modo consistente e quindi bisogna che l'elenco sia dinamico in modo che anche la combobox si adegui ai nuovi inserimenti nell'elenco.
Per rendere dinamico l'elenco basta inserire in una cella l'etichetta di colonna (in A1 digiti Attori), selezioni la cella A2 poi dalla scheda Inserisci > Tabella e seleziona "Tabella con intestazioni. Verrà visualizzata una nuova scheda "Progettazione" e nel gruppo Proprietà ci sarà il nome "Tabella1" (puoi assegnare un nome a piacimento).
sull'userform basterà questo codice

Private Sub UserForm_Activate()
ComboBox1.RowSource = "Tabella1"
End Sub
peppo

Excel 2010
peppo55
Utente Senior
 
Post: 154
Iscritto il: 30/09/12 13:51

Re: Tasti cliccabili e altro

Postdi JanaK » 01/10/13 23:23

Grazie 1000 ... direi però che una ComboBox Attori sia impensabile ... perlomeno, non la considero necessaria. Così come Titolo e Regista. Forse mi complicherei la vita o anche se non succedesse, renderei più pesante qualcosa che potrebbe essere leggero.
Voglio dire : se Attori contenesse dalla A alla Z, 500 nomi, per andare a pescare l' ultimo dovrei scendere di altri 499, quando invece mi basterebbe scrivere in una casella di ricerca "Zuzana Zuzuskhaya" ...

Però proverò la procedura che hai descritto, potrà venir buona per qualcos' altro, perchè la particolarità della "dinamica" è piuttosto promettente.

JanaK
Windows 8 - Office 2013
Intel Core i7 4770K CPU @ 3,50GHz + Corsair Hydro Series H100i Extreme Performance CPU Cooler
SSD Corsair Force Series GS 240GB
ATI Radeon HD 7970 3GB DDR5
RAM Corsair 16GB DDR3
Case Corsair Graphite Series 600T
JanaK
Utente Junior
 
Post: 32
Iscritto il: 30/09/13 09:24

Re: Tasti cliccabili e altro

Postdi peppo55 » 02/10/13 13:22

Ciao

forse mi sono espresso male,ci riprovo.
L' userform che hai mostrato contiene sei caselle di testo destinate ai protagonisti. Per aggiungere un nuovo film devi compilare le caselle manualmente (possibili errori di digitazione). Se queste caselle le sostituisci con delle combobox che prendono i dati dall'elenco sul foglio (che ho indicato come Attori), puoi selezionare dalle varie combobox i nomi dei protagonisti.
In pratica, all'apertura dell'userform tutte le combobox prenderanno i valori dell'elenco attori

Private Sub UserForm_Activate()
ComboBox1.RowSource = "Tabella1"
ComboBox2.RowSource = "Tabella1"
ecc...
End Sub
E' inoltre possibile digitare nella combobox un nuovo nome (di un protagonista) che andrà ad aggiungersi all'elenco sul foglio.
Per quanto riguarda la possibilità di ricercare tutti i films di un specifico attore (indipendentemente da quale combobox scegli il protagonista, è possibile usare uno speciale filtro che si chiama "Avanzate" e lo trovi nella scheda "Dati"
peppo

Excel 2010
peppo55
Utente Senior
 
Post: 154
Iscritto il: 30/09/12 13:51

PrecedenteProssimo

Torna a Applicazioni Office Windows


Topic correlati a "Tasti cliccabili e altro":


Chi c’è in linea

Visitano il forum: Nessuno e 12 ospiti

cron