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

Worksheet_Change/combobox/linkedCell

28 views
Skip to first unread message

Time7272

unread,
Aug 29, 2008, 12:52:09 PM8/29/08
to
Ciao NG,

utilizzo sia Excel 2003 (casa) sia excel 2000 (lavoro)

in un foglio ho scritto il seguente codice, tramite il doppio click
nella colonna I3 a I10 "scateno" l 'evento BeforeDoubleClick in seguito
con la Forms.ComboBox.1 creata, seleziono un numero da 0 a 100 e tramite
la LinkedCell il valore appare sulla colonna K in funzione del "target".

Ora arriva la domanda.......perché Worksheet_Change non si "scatena"
quando il valore della linkedCell appare sul foglio K3 o K10.

Inoltre chiedo se è possibile creare una variabile pubblica nel codice
scritto in una Sheet (pagina)?

Grazie e ciao

Codice nella Sheet 1:


Sub Worksheet_BeforeDoubleClick( _
ByVal Target As Range, _
Cancel As Boolean)

Dim Rng1 As Range
Dim cbo As OLEObject

Set Rng1 = Me.Range("I3:I10")

If Not Intersect(Rng1, Target) Is Nothing Then
Cancel = True
Set rTarget = Range(Target.Address)
Call DeleteComboboxesOnly
Set cbo = Nothing


Set cbo = ActiveSheet.OLEObjects.Add( _
ClassType:="Forms.ComboBox.1", _
Link:=False, _
DisplayAsIcon:=False, _
Left:=Range(Target.Address).Left, _
Top:=Range(Target.Address).Top, _
Width:=Range(Target.Address).Width, _
Height:=Range(Target.Address).Height)

For icounter = 0 To 100
cbo.Object.AddItem (icounter)
Next icounter

cbo.LinkedCell = Range(Target.Address).Offset(0,
2).Address ' scive nella colonna K

cbo.Object.ListIndex = 0

End If

End Sub


Private Sub Worksheet_Change(ByVal Target As Range)
Dim Rng2 As Range

Set Rng2 = Me.Range("k3:k10")

If Not Intersect(Rng2, Target) Is Nothing Then
Cancel = True
Target.Select ' only for test
MsgBox (Target.Address)
End If

End Sub


Sub DeleteComboboxesOnly()
Dim obj As OLEObject

For Each obj In ActiveSheet.OLEObjects
If obj.ProgId = "Forms.ComboBox.1" Then obj.delete
Next obj
End Sub

Maurizio Borrelli

unread,
Sep 2, 2008, 6:18:27 AM9/2/08
to
"Time7272" wrote in message
news:#V4BWefC...@TK2MSFTNGP04.phx.gbl:

Ciao Time7272.

> utilizzo sia Excel 2003 (casa) sia excel 2000 (lavoro)
> in un foglio ho scritto il seguente codice, tramite il doppio click
> nella colonna I3 a I10 "scateno" l 'evento BeforeDoubleClick in seguito
> con la Forms.ComboBox.1 creata, seleziono un numero da 0 a 100 e tramite
> la LinkedCell il valore appare sulla colonna K in funzione del "target".
> Ora arriva la domanda.......perché Worksheet_Change non si "scatena"
> quando il valore della linkedCell appare sul foglio K3 o K10.

Perche'... sta scritto (nella Guida):

**********
Worksheet.Change, evento
Si verifica quando alcune celle del foglio di lavoro vengono modificate
dall'utente o mediante un collegamento esterno.
[...]
Note
Questo evento non si verifica se i valori contenuti nelle celle vengono
modificati durante un'operazione di ricalcolo. Utilizzare l'evento
Calculate per intercettare un nuovo calcolo del foglio.
**********

> Inoltre chiedo se è possibile creare una variabile pubblica nel codice
> scritto in una Sheet (pagina)?

No. Nel senso che puoi, si`, crearla ma devi riferirti a essa come
faresti con una proprieta` di lettura/scrittura di un oggetto. Per
esempio:

' Modulo1 * INIZIO * --->
' - Modulo standard
'
Option Explicit

Public Sub Test()
Foglio1.MyVar = "Pippo"
Debug.Print Foglio1.MyVar
End Sub
' <--- Modulo1 * FINE *

' Foglio1 * INIZIO * --->
' - Modulo di classe dell`oggetto Worksheet
'
Option Explicit

Public MyVar As Variant
' <--- Foglio1 * FINE *

> Codice nella Sheet 1:
[...]

Che dobbiamo farci col "Codice nella Sheet 1" che ho omesso? Leggerlo? A
che scopo?

(Facci sapere se e eventualmente come hai risolto. Grazie!)

--
Ciao!
Maurizio Borrelli [Microsoft MVP Office System]
http://www.riolab.org/


0 new messages