Condividi:        

[EXCEL] CREAZIONE PULSANTE CHE RESTITUISCE L'ORA

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] CREAZIONE PULSANTE CHE RESTITUISCE L'ORA

Postdi NASTROMIL » 23/01/09 16:06

Salve a tutti,sono nuovo del forum. Ho un problema con un foglio di excel. Vorrei creare una lista di tot nominativi da controllare
entrata e uscita. Mi spiego: affianco a ogni nome ci vorrebbe un pulsante che cliccandolo mi restituisca l'ora attuale nella cella
subito adiacente in modo da dare automaticamente l'orario di entrata e poi uscita. Io ci sarei anche riuscito, ma quando clicco sul pulsante mi restituisce l'ora non nella cella accanto ma nella cella che ho attiva( selezionata) in quel momento. Grazie anticipatamente per qualche dritta che mi suggerirete.
NASTROMIL
Newbie
 
Post: 8
Iscritto il: 23/01/09 15:50

Sponsor
 

Re: [EXCEL] CREAZIONE PULSANTE CHE RESTITUISCE L'ORA

Postdi Anthony47 » 23/01/09 23:51

Ciao nastromil e benvenuto nel forum.
Perdona, ma questa e' una automazione abbastanza superflua perche' in una cella puoi inputare l' orario premendo Contr+"due punti".
Comunque se hai gia' "quasi fatto", vuol dire che a un certo punto hai una istruzione che scrive l' orario in "selection" oppure in "activecell"; ti bastera' modificare in "selection.offset(0,1).etc etc" oppure "activecell.offset(0,1).etc etc"
Se hai dei dubbi posta il codice che hai gia' e lo completiamo insieme.

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

Re: [EXCEL] CREAZIONE PULSANTE CHE RESTITUISCE L'ORA

Postdi NASTROMIL » 24/01/09 09:58

Ciao Anthony, innanzitutto grazie per avermi risposto; il codice è questo:
Sub Telaio1_Click()
Dim rng As Range
Set rng = Selection
rng.Value = Now()
End Sub
Cambiando 'Selection in selection.offset(0,1)" oppure "activecell.offset(0,1)mi da l'ora nella cella accanto a quella selezionata.
Quello che dicevo io era che, indipendentemente dalla cella selezionata in quel momento, l'ora dovrebbe comparire in una cella predefinita
e cioe immediatamente accanto al bottone; se il bottone è in nella cella G10, mi deve restituire l'ora in H10 anche se la cella selezionata
e' una qualsiasi in quel momento. Scusami se forse ho posto male la domanda iniziale.
Grazie,ciao
NASTROMIL
Newbie
 
Post: 8
Iscritto il: 23/01/09 15:50

Re: [EXCEL] CREAZIONE PULSANTE CHE RESTITUISCE L'ORA

Postdi Tribuno » 24/01/09 13:45

Ciao nastromil,
vedendo la tua macro hai creato i pulsanti tramite la barra degli strumenti "Strumenti di controllo", quindi avrai tante macro TelaioX_Click() quanti pulsanti hai nel foglio di lavoro.
Ne consegue che hai scritto per X volte le stesse istruzioni.
Per alleggerire il programma, e per una miglior manutenzione nel caso di variazione del codice, all'interno della Sub TelaioX_Click potresti mettere una chiamata ad una routine che contiene le istruzioni che svolgi attulamente all'interno di ogni singola Sub TelaioX_Click().

Per poter scrivere l'ora nella cella accanto a quella del pulsante puoi utilizzare una variabile che dalla Sub TelaioX_Click passi alla routine.
Potrebbe essere una cosa del genere.

All'interno del tuo foglio:
Codice: Seleziona tutto
Sub Telaio1_Click()
Rig=10
Col=7
Inserisci_Ora (Rig, Col)
End Sub


In un modulo
Codice: Seleziona tutto
Sub Inserisci_Ora(Rig, Col)
Cells(Rig, Col+1) = Now()
End Sub


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

Re: [EXCEL] CREAZIONE PULSANTE CHE RESTITUISCE L'ORA

Postdi NASTROMIL » 24/01/09 22:49

:oops: Ciao Tribuno, scusami ma non sono molto ferrato nel fare ciò. Potresti essere un po più elementare? non riesco a capire dove devo mettere quei codici :undecided: Ciao grazie
NASTROMIL
Newbie
 
Post: 8
Iscritto il: 23/01/09 15:50

Re: [EXCEL] CREAZIONE PULSANTE CHE RESTITUISCE L'ORA

Postdi Tribuno » 24/01/09 23:00

Ciao nastromil,

se clicchi due volte sul pulsante che hai creato sul foglio excel e che hai chiamato "Telaio1" si apre l'editor di VBA e sul frame di destra trovera l'evento Click del pulsante Telaio1. Ammettiamo che tale pulsante si trovi nella cella G7, ovvero nella cella di riga 7 e colonna 10.
Seleziona la macro le istruzioni all'interno dell'evento Click (dopo Sub Telaio1_Click() e prima di End Sub), le cancelli, poi copi le istruzioni della macro che avevo postato io (sempre all'interno di Sub Telaio1_Click() e End Sub), e la incolli.
Ora inserisci un nuovo modulo: Inserisci--->Modulo
Si apre un'altro frame a destra, incolla la macro Inserisci_Ora.
Con Alt+F11 ritorni sul tuo foglio excel e provi il pulsante Telaio1.
Se è quello che cercavi, devi effettuare lo stesso procedimento, solo per l'evento Click di ogni tuo pulsante, avendo l'accortezza di variare i valori di Rig e Col in base al posizionamento dei pulsanti.

Una raccomandazione, fai almeno due copie di backup del tuo file prima di apportare le modifiche.

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

Re: [EXCEL] CREAZIONE PULSANTE CHE RESTITUISCE L'ORA

Postdi NASTROMIL » 24/01/09 23:13

Ciao Tribuno, ho fatto tutto ma quando provo il pulsante mi dice errore di compilazione e errore di sintassi. la riga del primo codice nel primo modulo:
Inserisci_Ora (Rig, Col) diventa rossa. dov'è l'errore?
NASTROMIL
Newbie
 
Post: 8
Iscritto il: 23/01/09 15:50

Re: [EXCEL] CREAZIONE PULSANTE CHE RESTITUISCE L'ORA

Postdi Tribuno » 25/01/09 00:14

Prova a mettere Call prima di Inserisci_Ora (Rig, Col)

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

Re: [EXCEL] CREAZIONE PULSANTE CHE RESTITUISCE L'ORA

Postdi Anthony47 » 25/01/09 14:06

Sposo il metodo di Tribuno; come semplificazione, puoi usare queste istruzioni per ottenere le coordinate del bottone (angolo alto/sx) che attivi:
Codice: Seleziona tutto
Col = CommandButton1.TopLeftCell.Column
Rig = CommandButton1.TopLeftCell.Row
Da mettere prima della chiamata a Inserisci_Ora.

Pero' mi chiedo se, avendo N nominativi e M ore da compilare, e' saggio mettere N*M pulsanti con altrettante routine di gestione.
Non puo' essere utile 1 pulsante (degli strumenti Moduli) con una macro accoppiata, poi ricopiato nelle tante celle? in questo caso le coordinate del pulsante che attiva la macro le ottieni con
Codice: Seleziona tutto
Col = ActiveSheet.Shapes(Application.Caller).TopLeftCell.Column
Rig = ActiveSheet.Shapes(Application.Caller).TopLeftCell.Row

Oppure M pulsanti (1 per ogni orario da compilare) e un altro criterio per selezionare il nominativo (es la riga selezionata).

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

Re: [EXCEL] CREAZIONE PULSANTE CHE RESTITUISCE L'ORA

Postdi NASTROMIL » 25/01/09 15:08

grazie ragazzi per le vostre risposte ma ci rinuncio perche non riesco proprio a farlo funzionare. di nuovo grazie tante siete stati molto gentili
NASTROMIL
Newbie
 
Post: 8
Iscritto il: 23/01/09 15:50

Re: [EXCEL] CREAZIONE PULSANTE CHE RESTITUISCE L'ORA

Postdi Tribuno » 25/01/09 23:06

Nastromil, non scoraggiarti, prova e riprova vedrai che ce la fai. Per poterti aiutare dovresti indicare dove ti blocchi. Prima avevi detto che l'istruzione Inserisci_Ora (Rig, Col) diventava di colore rosso e la macro si fermava in quel punto. Ti avevo detto di scrivere Call prima dell'istruzione, cioé
Call Inserisci_Ora (Rig, Col)
l'hai fatto? Altri problemi?

Comunque ti allego un file di prova che ho creato, guardalo, spero ti sia di aiuto

[L’estensione zip è stata disattivata e non puó essere visualizzata.]



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

Re: [EXCEL] CREAZIONE PULSANTE CHE RESTITUISCE L'ORA

Postdi NASTROMIL » 26/01/09 08:53

Ciao Tribuno, ti ringrazio, avevo fatto tutto quello che mi avevi detto e ci sono anche riuscito. Il problema era diventato la grande quantita di pulsanti da fare: piu di 2000 nomi per 4 pulsanti l'uno(entrata -uscita mattina e idem pomeriggio). siccome che pensavo che era una cosa che si poteva fare con copia e incolla, avevo chiesto a voi aiuto per costruire un bottone per poi arrangiarmi io a copiarlo. Da quanto posso capire ogni bottone gli devo cambiare le coord. rig e col........mi ci vuole un mese :( . comunque grazie ancora ;) e ciao.
NASTROMIL
Newbie
 
Post: 8
Iscritto il: 23/01/09 15:50

Re: [EXCEL] CREAZIONE PULSANTE CHE RESTITUISCE L'ORA

Postdi Anthony47 » 26/01/09 19:03

Il "copia e incolla" lo puoi fare coi pulsanti della famiglia Moduli (non Strumenti di controllo), con la tecnica descritta nel mio post del 25/01/09 pomeriggio; in passato abbiamo anche trattato di come realizzare grandi quantita' di oggetti in posizione prestabilita, ad esempio qui: viewtopic.php?f=26&t=64142

Comunque dubito che 2000 pulsanti siano poi pratici da operare.
Per me un' alternativa puo' essere quella dei 4 pulsanti che agiscono sulla riga selezionata.

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


Torna a Applicazioni Office Windows


Topic correlati a "[EXCEL] CREAZIONE PULSANTE CHE RESTITUISCE L'ORA":


Chi c’è in linea

Visitano il forum: Nessuno e 44 ospiti