Buenas noches al grupo. Quizás lo que quiero exponer sea un poco enrevesado.
Iba buscando la posibilidad de que al entrar el dato del nombre y del
CIF/NIF del cliente, en determinadas celdas, se conviertan a mayúsculas
automáticamente mediante VBA.
Así que si sabeis de alguna solución, por favor pasadmela.
Pero creo que lo he liado mucho.
En una Hoja, que llamo TCLIENTES defino una base de datos de clientes. Cada
fila será un registro y cada columna un campo de la tabla.
Tendremos la columna NOMBRE, la columna DIRECCIÓN, la columna CIFNIF, ...
También definí, entre otros, los nombres en el libro:
TCLIENTES como el rango dinámico:
ÞSREF(TCLIENTES!$A$2;0;0;CONTARA(TCLIENTES!$A:$A);14)
TCLIENTES_NOMBRECLIENTE como el rango dinámico:
ÞSREF(TCLIENTES!$A$2;0;0;FILAS(TCLIENTES);1)
TCLIENTES_CIFNIF como el rango dinámico:
ÞSREF(TCLIENTES!$E$2;0;0;FILAS(TCLIENTES);1)
Ahora, en el evento ____ Worksheet_Change(ByVal Target As Range) ____ de la
hoja, he de ver primero cuando el Target está dentro de los rangos
TCLIENTES_NOMBRECLIENTE o TCLIENTES_CIFNIF (mediante intersección) y si
procede después, con la función UCASE() poner en mayúsculas la celda. Hasta
aquí todo bien.
Seguimos:
Defino una variable cadena como:
=Application.Names("TCLIENTES_NOMBRECLIENTE ").RefersTo
con lo que la variable guarda el valor:
"ÞSREF(TCLIENTES!$A$2;0;0;FILAS(TCLIENTES);1)"
Y lo mismo para TCLIENTES_CIFNIF. Bien.
El problema es:
¿Cómo defino en VBA los rangos que se representan a partir de estas cadenas
de fórmulas, (no sólo cadenas de referencias al estilo, p.e. "$A$1:$A$7") ?
He probado con .RefersToRange pero me da error. Dice la ayuda que funciona
solo si son referencias explícitas, como la señalada"$A$1:$A$7".
Saludos.
Leer las respuestas