como saber si una celda está en un rango?

14/06/2004 - 09:57 por gema.bernardo | Informe spam
Hola gente,

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.

Preguntas similare

Leer las respuestas

#1 Héctor Miguel
14/06/2004 - 11:14 | Informe spam
hola, Gema !

... 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.
Respuesta Responder a este mensaje
#2 gema.bernardo
14/06/2004 - 13:27 | Informe spam
Gracias Héctor,

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.


Héctor Miguel wrote:

hola, Gema !

> ... 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.
Respuesta Responder a este mensaje
#3 gema.bernardo
14/06/2004 - 15:23 | Informe spam
Nada.. todo perfecto tal y como me lo indicaste, tenia un error en otro
sitio..

Un saludo,
Gema.
Muchas gracias.


Héctor Miguel wrote:

hola, Gema !

> ... 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.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida