Select Case Target.Address

11/10/2003 - 18:03 por Pepito I | Informe spam
Hola a todos !!!
Me gusta trabajar con Select case pero ahora me da un
problema: Este código lo tengo en el evento
SelectionChange del Libro con el objetivo de no utilizar
la validación , ni proteger la hoja para no permitir
seleccionar ciertas celdas que contienen Fórmulas. Todo
funciona bien exepto que en la linea que uso To para
decirle que es del rango c27 hasta g29 pero no lo entiende
bien pues reaciona con otras celdas que no pertenecen a
ese rango.
Alguien me pudiera decir como hacerlo para que me acepte
un rango y no tener que hacer un case para cada una.
Espero me ayudan como siempre.Saludos
Pepito
El código es el sgte :
On Error GoTo errorhandler
'ActiveSheet.Unprotect
Select Case Target.Address
Case Range("a1").Address
Case Range("$C$27").Address To Range("$G$29").Address ,
Range("$E$13:$E$14").Address
MsgBox "En esta celda no se puede hacer cambios pues
contiene fórmula"
'Debug.Print Target.Address & Now
Range("a1").Select
Case Else
End Select
Exit Sub
errorhandler:
Resume Next

Preguntas similare

Leer las respuestas

#1 Fernando Arroyo
12/10/2003 - 12:27 | Informe spam
De la lectura del código no he conseguido deducir qué es lo que estás intentando hacer. Te aconsejo que nos lo digas para que podamos sugerirte un código. En pricipio, el uso que haces de la instrucción Select Case me parece inadecuado. En la ayuda de Excel de esta instrucción viene un ejemplo que considero bastante clarificador.
Un saludo.


Fernando Arroyo
MS MVP - Excel

"Pepito I" escribió en el mensaje news:00c401c39011$39150af0$
Hola a todos !!!
Me gusta trabajar con Select case pero ahora me da un
problema: Este código lo tengo en el evento
SelectionChange del Libro con el objetivo de no utilizar
la validación , ni proteger la hoja para no permitir
seleccionar ciertas celdas que contienen Fórmulas. Todo
funciona bien exepto que en la linea que uso To para
decirle que es del rango c27 hasta g29 pero no lo entiende
bien pues reaciona con otras celdas que no pertenecen a
ese rango.
Alguien me pudiera decir como hacerlo para que me acepte
un rango y no tener que hacer un case para cada una.
Espero me ayudan como siempre.Saludos
Pepito
El código es el sgte :
On Error GoTo errorhandler
'ActiveSheet.Unprotect
Select Case Target.Address
Case Range("a1").Address
Case Range("$C$27").Address To Range("$G$29").Address ,
Range("$E$13:$E$14").Address
MsgBox "En esta celda no se puede hacer cambios pues
contiene fórmula"
'Debug.Print Target.Address & Now
Range("a1").Select
Case Else
End Select
Exit Sub
errorhandler:
Resume Next
Respuesta Responder a este mensaje
#2 Pepito I
12/10/2003 - 13:10 | Informe spam
Fernando mis saludos!!!
Yo lo que estoy intentando hacer con un select case es no
permitir seleccionar algunas celdas de la hoja de calculo
si estas son seleccionadas , el código obliga a ir a la
celda A1.Y de paso me funciona , pero cuando le voy a
decir al case que el rango va de la celda c27 a la g29 no
me lo asume correctamente pues me reacciona con algunas
celdas fuera del rango .
Lo específico es que si puedo definir un rango de
direcciones de celda y usar To para indicar el inicio y el
final del rango.
Si no me entiendes lo intentaré de otra forma :-))).
SDaludos
Pepito I


De la lectura del código no he conseguido deducir qué es


lo que estás intentando hacer. Te aconsejo que nos lo
digas para que podamos sugerirte un código. En pricipio,
el uso que haces de la instrucción Select Case me parece
inadecuado. En la ayuda de Excel de esta instrucción viene
un ejemplo que considero bastante clarificador.
Un saludo.


Fernando Arroyo
MS MVP - Excel

"Pepito I" escribió en el


mensaje news:00c401c39011$39150af0$
Hola a todos !!!
Me gusta trabajar con Select case pero ahora me da un
problema: Este código lo tengo en el evento
SelectionChange del Libro con el objetivo de no utilizar
la validación , ni proteger la hoja para no permitir
seleccionar ciertas celdas que contienen Fórmulas. Todo
funciona bien exepto que en la linea que uso To para
decirle que es del rango c27 hasta g29 pero no lo


entiende
bien pues reaciona con otras celdas que no pertenecen a
ese rango.
Alguien me pudiera decir como hacerlo para que me acepte
un rango y no tener que hacer un case para cada una.
Espero me ayudan como siempre.Saludos
Pepito
El código es el sgte :
On Error GoTo errorhandler
'ActiveSheet.Unprotect
Select Case Target.Address
Case Range("a1").Address
Case Range("$C$27").Address To Range("$G$29").Address ,
Range("$E$13:$E$14").Address
MsgBox "En esta celda no se puede hacer cambios pues
contiene fórmula"
'Debug.Print Target.Address & Now
Range("a1").Select
Case Else
End Select
Exit Sub
errorhandler:
Resume Next

.

Respuesta Responder a este mensaje
#3 MRGT
12/10/2003 - 13:33 | Informe spam
El objeto 'Target' tiene dimensiones de 'Range', o sea es una variable tipo
'rango'
Mientras que la propiedad 'Address' devuelve una variable tipo 'String'
No puedes usar el 'To' con variables tipo 'String'
Por ahí van los tiros
Yo he desarrollado algún código que hacía cosas así y opté por hacerlo con
variables tipo 'Integer' usando número de fila y número de columna, algo así
como:

Dim Nfila, Ncol as Integer
NFila = Target.Row
NCol = Target.Column

If NFila>=2 and NFila< and NCol=2 Then
MsgBox "En esta celda no se pueden hacer cambios pues contiene fórmula"
Cells(1,1).Select
End if

En este caso para usar Select Case podrías crear otra variable por ejemplo
tipo Byte a la cual se le asignaran valores 1, 2, 3, ... etc. en función de
los varores de fila y columna del 'Target' para ejecutar las acciones
pertinentes en cada caso

Espero te sea de utilidad
MRGT

"Pepito I" escribió en el mensaje
news:00c401c39011$39150af0$
Hola a todos !!!
Me gusta trabajar con Select case pero ahora me da un
problema: Este código lo tengo en el evento
SelectionChange del Libro con el objetivo de no utilizar
la validación , ni proteger la hoja para no permitir
seleccionar ciertas celdas que contienen Fórmulas. Todo
funciona bien exepto que en la linea que uso To para
decirle que es del rango c27 hasta g29 pero no lo entiende
bien pues reaciona con otras celdas que no pertenecen a
ese rango.
Alguien me pudiera decir como hacerlo para que me acepte
un rango y no tener que hacer un case para cada una.
Espero me ayudan como siempre.Saludos
Pepito
El código es el sgte :
On Error GoTo errorhandler
'ActiveSheet.Unprotect
Select Case Target.Address
Case Range("a1").Address
Case Range("$C$27").Address To Range("$G$29").Address ,
Range("$E$13:$E$14").Address
MsgBox "En esta celda no se puede hacer cambios pues
contiene fórmula"
'Debug.Print Target.Address & Now
Range("a1").Select
Case Else
End Select
Exit Sub
errorhandler:
Resume Next
Respuesta Responder a este mensaje
#4 Fernando Arroyo
13/10/2003 - 09:58 | Informe spam
¿Y no sería más sencillo desbloquear las celdas que sí se pueden editar (desde Formato->Celdas->solapa "Seguridad"->Bloqueada) y luego proteger la hoja?
Con esto te evitarías tener que escribir código.
Un saludo.


Fernando Arroyo
MS MVP - Excel


"Pepito I" escribió en el mensaje news:028e01c390b1$7a49bd90$
Fernando mis saludos!!!
Yo lo que estoy intentando hacer con un select case es no
permitir seleccionar algunas celdas de la hoja de calculo
si estas son seleccionadas , el código obliga a ir a la
celda A1.Y de paso me funciona , pero cuando le voy a
decir al case que el rango va de la celda c27 a la g29 no
me lo asume correctamente pues me reacciona con algunas
celdas fuera del rango .
Lo específico es que si puedo definir un rango de
direcciones de celda y usar To para indicar el inicio y el
final del rango.
Si no me entiendes lo intentaré de otra forma :-))).
SDaludos
Pepito I
Respuesta Responder a este mensaje
#5 Pepito I
14/10/2003 - 02:32 | Informe spam
Saludos MRGT ,
Gracias ,era exactamente lo que quería saber: que no
puedo usar To en el case pues estoy utilizando variables
tipo String. ok ? Muchas gracias .
Ahora para 'cure?i?osear' mira en este código si tu
seleccionas la columna B completa o a C1 y todo es
perfecto , como si lo hubiera entendido , pero si cambias
por ejemplo una letra de estas a minúsculas o le quitas
las referencias absolutas se te forma , bueno mejor no
pruebes ;-=))
Select Case Target.Address
Case "$B$1" To "$C$1"
MsgBox "Esta es la columna B!"
Case Else
MsgBox "Esto no es B:B "
End Select
bueno , ya lo hice como me sugieres por Target.Column
y .Row y todo bien . oK
Chaooooooooooooo

Pepito I.
Ojo )) " La constancia ahorra el esfuerzo" ORG




El objeto 'Target' tiene dimensiones de 'Range', o sea es


una variable tipo
'rango'
Mientras que la propiedad 'Address' devuelve una variable


tipo 'String'
No puedes usar el 'To' con variables tipo 'String'
Por ahí van los tiros
Yo he desarrollado algún código que hacía cosas así y


opté por hacerlo con
variables tipo 'Integer' usando número de fila y número


de columna, algo así
como:

Dim Nfila, Ncol as Integer
NFila = Target.Row
NCol = Target.Column

If NFila>=2 and NFila< and NCol=2 Then
MsgBox "En esta celda no se pueden hacer cambios pues


contiene fórmula"
Cells(1,1).Select
End if

En este caso para usar Select Case podrías crear otra


variable por ejemplo
tipo Byte a la cual se le asignaran valores 1, 2, 3, ...


etc. en función de
los varores de fila y columna del 'Target' para ejecutar


las acciones
pertinentes en cada caso

Espero te sea de utilidad
MRGT

"Pepito I" escribió en el


mensaje
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida