Necesito ayuda porque soy nueva en el tratamiento de excel con visual
basic..
Quiero ver si una celda pertenece a un rango definido
Veamos.. mi rango es:
RANGO = "A16B16:A60B60"
y quiero saber si la celda que paso como variable a una funcion pertenece
a este rango.
Muchas gracias por adelantado.
> ... ver si una celda pertenece a un rango definido
> ... mi rango es: "A16B16:A60B60"
> ... saber si la celda que paso como variable a una funcion pertenece a este rango.
=> nota que estas 'ejemplificando' DOS rangos 'discontinuos' <=
'A16:B16' Y 'A60:B60'
suponiendo que tu funcion 'ya recibe' el argumento para la celda que 'le pasas' [p.e.]
Function Mi_Funcion(ByVal EstaCelda As Range) [etc. etc. etc.]
puedes usar la instruccion 'Intersect' [+/- de la siguiente manera]
If Not Intersect(Range("a16:b16,a60:b60"), EstaCelda) Is Nothing Then
' aqui las instrucciones SI 'EstaCelda' es parte del rango '
Else
' aqui las instrucciones SI 'EstaCelda' NO es parte del rango '
End If
saludos,
hector.
Yo me habia hecho un bucle recorriendo el rango para ver si esa celda
estaba en él, pero si ya existe la funcion Intersect es tonteria... solo
que tengo problemas con la obtencion de la celda como Range.
Te cuento...
Cuando se hace un cambio de escritura sobre una hoja del libro excel,
ejecuto determinadas actividades.
La forma de recoger la celda sobre la que se produjo el cambio es de tipo
Range, sin embargo lo que me llega es el valor de la celda.
Private Sub Worksheet_Change(ByVal Target As Range)
Call Change(Target, Target.Worksheet.Index)
End Sub
En el procedimiento Change quiero detectar si se trata de una celda que
esta en el rango [A16:B60]
El problema es que si llamo Intersect(Range(rng2), Target), en target me
esta cargando "1", que es el valor que tiene la celda. Y tambien he
probado esto otro sin éxito.
Sub Change(ByVal Target As Range, isheet As Long)
Dim dentro As Boolean
Dim rng2 As String
Dim rng3 As Range
rng2 = "A16:B60"
rng3 = Target.Column & ":" & Target.Row '----> Se queda de la forma
(1:16)
dentro = False
If Intersect(Range(rng2), Range(rng3)) Is Nothing Then
dentro = True
End If
End Sub
Las dos formas de pasar el parametro del rng3 me da problemas ¿Cómo
construir el parametro (¿Qué formato?) de la celda que quiero comprobar si
está en el rango?.. puede alguien echarme una manilla .. please??
De nuevo, muchas gracias si me podeis ayudar.
Un saludo,
Gema.
Muchas gracias.