Condividi:        

[EXCEL] help per macro

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] help per macro

Postdi marte1503 » 07/09/11 22:37

Ciao a tutti.
Sto creando una macro a pezzi avrei bisogno di chiedervi come si scrive in vba questa informazione:
supponete di avere in foglio13 da F5aF104 una serie di celle con all’interno di ciascuna un pulsante.
Vorrei che premendo il pulsante in una cella di questo intervallo (ipotesi F8, nella cella a sinistra la E8 compaia 1)
Se poi immediatamente dopo cliccassi quello in F25 dovrebbe ripulirsi rutto il range F5:F104 e sempre nella cella a sinistra, la E25 dovrebbe apparire sempre 1
Al momento ho creato questa:
Codice: Seleziona tutto
Sub Inserisce_Il_Numero_1_accanto_Ai_Nomi()
'
' Inserisce_Il_Numero_1_accanto_Ai_Nomi Macro
'

'
    Range("E5:E104").Select
    Selection.ClearContents
    Application
    Range("E5").Select
    ActiveCell.FormulaR1C1 = "1"
End Sub

Scritta così la macro funziona solo su E5. Vorrei evitare di generare 100 macro con 100 range e mi chiedevo quale fosse l’informazione per generare in automatico l’1 accanto alla cella nella quale ho posizionato il pulsante.

Grazie!
ciao
marte1503
Utente Senior
 
Post: 232
Iscritto il: 08/01/10 20:43
Località: Como

Sponsor
 

Re: [EXCEL] help per macro

Postdi Anthony47 » 07/09/11 22:41

Guarda se quanto suggerito qui ti da' spunto quanto basta, se no posta ancora: viewtopic.php?f=26&t=92693&p=529766#p529697
(Usa il suggerimento per sapere quale pulsante e' stato premuto)

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

Re: [EXCEL] help per macro

Postdi marte1503 » 07/09/11 23:28

Grazie 1000 Anthony,

risolto! :)
Codice: Seleziona tutto
Sub Inserisce_Il_Numero_1_accanto_Ai_Nomi()
'
' Inserisce_Il_Numero_1_accanto_Ai_Nomi Macro
'

'
    Range("E5:E104").Select
    Selection.ClearContents
    II = ActiveSheet.Shapes(Application.Caller).TopLeftCell.Row
    Cells(II, 5).Select
    ActiveCell.FormulaR1C1 = "1"
   
End Sub


Mi risentirete presto..
bye
marte1503
marte1503
Utente Senior
 
Post: 232
Iscritto il: 08/01/10 20:43
Località: Como

Re: [EXCEL] help per macro

Postdi Flash30005 » 08/09/11 07:18

Per evitare di selezionare il range puoi scrivere anche così
Codice: Seleziona tutto
    Range("E5:E104").ClearContents

e

Codice: Seleziona tutto
    Cells(II, 5).FormulaR1C1 = "1"

;)

Ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: [EXCEL] help per macro

Postdi marte1503 » 08/09/11 20:53

Ciao Flash, ho corretto la macro come mi hai suggerito.
Grazie per la dritta.
Ciao
marte1503
marte1503
Utente Senior
 
Post: 232
Iscritto il: 08/01/10 20:43
Località: Como

Re: [EXCEL] help per macro

Postdi marte1503 » 09/09/11 21:58

Ciao Flash, dopo la tua indicazione questo è il codice che ho creato

Codice: Seleziona tutto
Application.ScreenUpdating = False
    Range("E5:E104").Select
    Selection.ClearContents
    II = ActiveSheet.Shapes(Application.Caller).TopLeftCell.Row
    Cells(II, 5).FormulaR1C1 = "1"
    Application.ScreenUpdating = True
    Sheets("Foglio9").Select

End Sub

Avrei bisogno di una nuova piccola modifica..
Mi servirebbe un informazione di tipo exit sub se la cella nella quale si trova il pulsante è vuota.

Ho provato a creare questa macro ma non funziona.. :mmmh: mi puoi dare un suggerimento per piacere?

Codice: Seleziona tutto
 Application.ScreenUpdating = False
    Range("E5:E104").Select
    Selection.ClearContents
    II = ActiveSheet.Shapes(Application.Caller).TopLeftCell.Row
    If Cells(II, 5) = "" Then Exit Sub------------------------>>>>Aggiunta da me..
    Cells(II, 5).FormulaR1C1 = "1"
    Application.ScreenUpdating = True
    Sheets("Foglio9").Select



marte1503
marte1503
Utente Senior
 
Post: 232
Iscritto il: 08/01/10 20:43
Località: Como

Re: [EXCEL] help per macro

Postdi Flash30005 » 09/09/11 22:05

Così non potrà mai funzionare anche se il ragionamento è corretto (controllo se è nullo) ma non sulla colonna 5
nel senso che devi controllare che il pulsante non ci sia non la cella a fianco sia vuota, in pratica lo "Shape" è assente
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: [EXCEL] help per macro

Postdi marte1503 » 09/09/11 22:15

Malgrado la tua spiegazione sia chiara non so come muovermi per ottenere il risultato sperato..

Cosa devo fare :oops:
marte1503
Utente Senior
 
Post: 232
Iscritto il: 08/01/10 20:43
Località: Como

Re: [EXCEL] help per macro

Postdi Anthony47 » 09/09/11 23:37

Mi servirebbe un informazione di tipo exit sub se la cella nella quale si trova il pulsante è vuota.
Codice: Seleziona tutto
If ActiveSheet.Shapes(Application.Caller).TopLeftCell = "" Then Exit Sub

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

Re: [EXCEL] help per macro

Postdi marte1503 » 10/09/11 10:33

Ciao Anthony, grazie per la riga di codice (sono solo un appassionato che di sera dopo una giornata di lavoro si diverte a girare per il mondo di excel gattonando come un bambino, non sarei mai arrivato a scrivere questo comando).

Ho questo problema:
ho provato a inserire la macro in un nuovo foglio non collegato al mio programma e funziona proprio come chiedevo, ma la stessa macro inserita nel mio programma non funziona più (nel senso che inserisce il numero 1 e mi rimanda a Foglio9 malgrado la cella nella quale si trova il pulsante sia vuota).

Preciso che tutte le celle dove è presente il pulsante fanno riferimento a un’altra cella es. =H1120 che a sua volta può apparire vuota perché contiene la formula: =SE(G1120=F1120-E1120;"";AS1120&" "&AT1120).
Pesi possa dipendere da questo?

Questa è la macro:

Codice: Seleziona tutto
Application.ScreenUpdating = False
    Range("E5:E104").Select
    Selection.ClearContents
    If ActiveSheet.Shapes(Application.Caller).TopLeftCell = "" Then Exit Sub
    II = ActiveSheet.Shapes(Application.Caller).TopLeftCell.Row
    Cells(II, 5).FormulaR1C1 = "1"
    Application.ScreenUpdating = True
    Sheets("Foglio9").Select


Grazie..
Marte1503
marte1503
Utente Senior
 
Post: 232
Iscritto il: 08/01/10 20:43
Località: Como

Re: [EXCEL] help per macro

Postdi marte1503 » 10/09/11 10:40

....Cavolo altro dettaglio che magari può influire...

La cella dove ho sistemato il pulsante è una cella unita! In realtà è la fusione in unica cella di 7 celle da F a L

Meglio separarle??

Ciao
marte1503
Utente Senior
 
Post: 232
Iscritto il: 08/01/10 20:43
Località: Como

Re: [EXCEL] help per macro

Postdi Anthony47 » 11/09/11 00:01

La tua formula ("=SE(G1120=F1120-E1120;"";AS1120&" "&AT1120)") puo' restituire un valore "nullo" (SE test=vero), un valore sensato (Valore1 Valore2), e un valore subdolo (se Test=vero ma Valore1 e Valore2 sono a loro volta nulli otterrai "spazio"); la formula "sembra che vada in crisi" sul risultato subdolo, ma in realta' fa il suo onesto lavoro perche' la cella non e' vuota.
Potresti usare
Codice: Seleziona tutto
    If Len(ActiveSheet.Shapes(Application.Caller).TopLeftCell) < 2 Then Exit Sub

Il fatto che le celle siano unite in questo caso non impatta; ma delle celle unite io ne penso sempre male.

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

Re: [EXCEL] help per macro

Postdi marte1503 » 11/09/11 09:50

Ciao Anthony,
anche sta volta Grazie, hai risolto il mio problema! Ora la macro è perfetta.

Approfitto della tua attenzione ancora per un secondo, perdona la petulanza..

Codice: Seleziona tutto
II = ActiveSheet.Shapes(Application.Caller).TopLeftCell.Row
Cells(II, 5).FormulaR1C1 = "1"


mi puoi spiegare le istruzioni di queste 2 righe? La doppia I (II) all'inizio della riga che cosa vuol dire?
della seconda riga ho capito che il 5 è riferito alla colonna

Sarà una domanda un po' idiota ma se dovessi riutilizzare queste istruzioni in un nuovo codice vorrei poter dire:
"questa istruzione serva a..." e non "inserisco queste 2 righe perche mi hanno detto che si fa così..."

Grazie
Marte1503
marte1503
Utente Senior
 
Post: 232
Iscritto il: 08/01/10 20:43
Località: Como

Re: [EXCEL] help per macro

Postdi Anthony47 » 11/09/11 19:57

Application.Caller, nel contesto, restituisce il nome dell' oggetto che richiama la macro; per ActiveSheet.Shapes(NomeForma) guarda l' help on line del vba alla voce "Insieme Shapes"; ancora l' help on line dira' tutto di TopLeftCell e, se ce ne fosse bisogno, per Row.

L' istruzione Cells ti restituisce un range, dove la Proprieta' FormulaR1C1 carica un valore.

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

Re: [EXCEL] help per macro

Postdi marte1503 » 11/09/11 21:26

Grazie di tutto
Marte1503

Ciao
marte1503
Utente Senior
 
Post: 232
Iscritto il: 08/01/10 20:43
Località: Como


Torna a Applicazioni Office Windows


Topic correlati a "[EXCEL] help per macro":


Chi c’è in linea

Visitano il forum: Nessuno e 35 ospiti