Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

cella come pulsante

1,395 views
Skip to first unread message

maxma

unread,
Jan 22, 2010, 4:16:20 AM1/22/10
to
Salve a tutti.
I pulsanti nei fogli siccome mi sembrano un pò antiestetici chiedo se
possibile se al posto del pulsante, che mi faccia un determinato
comando, cliccando dentro a una cella X questa mi faccia la stessa
cosa del pulsante.
Questo è il comando del pulsante:

Private Sub CommandButton2_Click()
Range("d3:m3").ClearContents
End Sub

al posto di CommndButtom2_Clik() cosa devo inserire?
max

Mauro Gamberini

unread,
Jan 22, 2010, 11:49:20 AM1/22/10
to
I fogli hanno un evento SelectionChange che si scatena
ogni volta che selezioni una cella.
Quindi, se la tua cella � la cella B1 del Foglio1:

1) ALT+F11 e sei nell'editor del vb di Excel
2) individua: Progetto-VBAProject
3) fai doppio click su Foglio1
4) in alto nella ComboBox dove hai: (generale),
seleziona: Worksheet
5) ti viene messo sul modulo di codice lo scheletro
dell'evento che, ricordandoti che in questo esempio
voglio che sia la cella B1 a *trasformarsi* in pulsante,
deve avere al suo interno il codice per fare
quanto chiedi:

Private Sub Worksheet_SelectionChange( _
ByVal Target As Range)
If Target.Address = "$B$1" Then
Me.Range("D3:M3").ClearContents
End If
End Sub

Nel caso la cella sia diversa, modifica il suo
riferimento.

Dai un'occhiatina alla guida di Excel
all'evento: SelectionChange
e, se vuoi, qui:

http://www.maurogsc.eu/excel/xlseventoselectionchange.aspx


Grazie per l'attenzione.

--
---------------------------
Mauro Gamberini
Microsoft MVP - Excel
http://www.riolab.org/
http://www.maurogsc.eu/
http://social.microsoft.com/Forums/it-IT/excelit/threads/

maxma

unread,
Jan 22, 2010, 1:04:50 PM1/22/10
to
On 22 Gen, 17:49, "Mauro Gamberini"

<maurogscRIMUOV...@RIMUOVEREaliceposta.it> wrote:
> I fogli hanno un evento SelectionChange che si scatena
> ogni volta che selezioni una cella.
> Quindi, se la tua cella è la cella B1 del Foglio1:

Grazie della risposta mauro.
Nel foglio dove devo inserire questo nuovo codice
non posso inserirlo perchè c'è anche questo codice:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Range("P16:W1502"), Target) Is Nothing Then
Dim sFatto As String
Dim sRow As Long
Dim nClm As Long
;
;
;
;

e all'avvio mi dà questo errore:

Errore di compilazione:
rilevato nome non univoco: Worksheet_SelectionChange

Sapendo poco di vba mi sembra che l'errore sia che 2
Worksheet_SelectionChange assieme non possono andare, almeno penso.
C'è una soluzione?
Un'altra cosa questo nuovo comando al posto del pulsante
non e' alla fine solo 1 ma di piu' riferiti altre serie di celle.
max

Drago

unread,
Jan 22, 2010, 1:55:17 PM1/22/10
to
prova a copiare all'interno del codice che esiste gia solo queste righe

If Target.Address = "$B$1" Then
Me.Range("D3:M3").ClearContents
End If


"maxma" <maxsi...@yahoo.it> ha scritto nel messaggio
news:cd043898-a724-4cf2...@a15g2000yqm.googlegroups.com...


> On 22 Gen, 17:49, "Mauro Gamberini"
> <maurogscRIMUOV...@RIMUOVEREaliceposta.it> wrote:
>> I fogli hanno un evento SelectionChange che si scatena
>> ogni volta che selezioni una cella.

>> Quindi, se la tua cella � la cella B1 del Foglio1:

> non posso inserirlo perch� c'� anche questo codice:


>
> Private Sub Worksheet_SelectionChange(ByVal Target As Range)
> If Not Intersect(Range("P16:W1502"), Target) Is Nothing Then
> Dim sFatto As String
> Dim sRow As Long
> Dim nClm As Long
> ;
> ;
> ;
> ;
>

> e all'avvio mi d� questo errore:


>
> Errore di compilazione:
> rilevato nome non univoco: Worksheet_SelectionChange
>
> Sapendo poco di vba mi sembra che l'errore sia che 2
> Worksheet_SelectionChange assieme non possono andare, almeno penso.

> C'� una soluzione?

maxma

unread,
Jan 22, 2010, 2:15:43 PM1/22/10
to
On 22 Gen, 19:55, "Drago" <V_IsAaMb...@UlSiCbOeLrEo.it> wrote:
> prova a copiare all'interno del codice che esiste gia solo queste righe
>
> If Target.Address = "$B$1" Then
> Me.Range("D3:M3").ClearContents
> End If
>
> "maxma" <maxsixty...@yahoo.it> ha scritto nel messaggionews:cd043898-a724-4cf2...@a15g2000yqm.googlegroups.com...
> >> Excelhttp://www.riolab.org/http://www.maurogsc.eu/http://social.microsoft....

>
> > Grazie della risposta mauro.
> > Nel foglio dove devo inserire questo nuovo codice
> > non posso inserirlo perch c' anche questo codice:
>
> > Private Sub Worksheet_SelectionChange(ByVal Target As Range)
> > If Not Intersect(Range("P16:W1502"), Target) Is Nothing Then
> > Dim sFatto As String
> > Dim sRow As Long
> > Dim nClm As Long
> > ;
> > ;
> > ;
> > ;
>
> > e all'avvio mi d questo errore:
>
> > Errore di compilazione:
> > rilevato nome non univoco: Worksheet_SelectionChange
>
> > Sapendo poco di vba mi sembra che l'errore sia che 2
> > Worksheet_SelectionChange assieme non possono andare, almeno penso.
> > C' una soluzione?
> > Un'altra cosa questo nuovo comando al posto del pulsante
> > non e' alla fine solo 1 ma di piu' riferiti altre serie di celle.
> > max

Non mi cancella niente.

In vba > foglio1 ho inserito:

Option Explicit

Private Sub Worksheet_SelectionChange( _

If Target.Address = "$a$5" Then
Me.Range("e5:n5").ClearContents
End If

vado in excel clicco in A5 ma non cancella E5:N5
dove sbaglio?

Forse manca questo?
--------------------------------------------------------


5) ti viene messo sul modulo di codice lo scheletro
dell'evento che, ricordandoti che in questo esempio

voglio che sia la cella B1 a *trasformarsi* in pulsante, <<<<<<???
deve avere al suo interno il codice per fare <<<<<<<<<????
quanto chiedi:
--------------------------------------------------------
max

eliano

unread,
Jan 22, 2010, 8:21:15 PM1/22/10
to
> max- Nascondi testo citato
>
> - Mostra testo citato -

Ciao max.
Dove sbagli ho già avuto modo di dirtelo in altre occasioni.:-))
Comunque, prova con questa routine di evento, il doppioclic sinistro,
ovviamente dopo aver verificato sulla guida in linea sia gli eventi
del workbook che questo evento specifico.

Nel modulo del Foglio1 copia/incolla questa macro:

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel
As Boolean)
Cancel = True
If Target.Address = "$A$5" Then
Me.Range("E5:N5").ClearContents
End If
End Sub

A scanso di equivoci salva, chiudi il file e riaprilo; adesso se fai
un doppioclic sx sulla cella A5 del Foglio1 si dovrebbero cancellare i
valori contenuti nel range: E5:N5

Eliano

maxma

unread,
Jan 23, 2010, 4:49:18 AM1/23/10
to


Grazie,
max

0 new messages