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
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/