Mensaje en validación

18/04/2006 - 21:21 por ~jose~ | Informe spam
Hola que tal?
¿Se puede hacer que aparezca en el mensaje entrante de una validación el
contenido de una celda que se encuentre en la celda por ejemplo "A1" de la
"hoja 1"?

Preguntas similare

Leer las respuestas

#1 Héctor Miguel
20/04/2006 - 00:16 | Informe spam
hola, jose !

Se puede hacer que aparezca en el mensaje entrante de una validacion
el contenido de una celda que se encuentre en la celda por ejemplo "A1" de la "hoja 1"?



suponiendo que 'la celda' donde tienes la validacion es 'B3' de la hoja 'X'... prueba copiado...
en el modulo de codigo de 'esa' hoja 'X' ==Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Address <> "$B$3" Then Exit Sub
Target.Validation.InputMessage = Worksheets("hoja1").Range("a1")
End Sub


si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.
Respuesta Responder a este mensaje
#2 ~ jose ~
20/04/2006 - 22:05 | Informe spam
Muy bien, funciona bien la solución que me has propuesto, pero... y si
quiero hacer esto en varias celdas?
He dejado el código asi pero solo funcina en la primera celda:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Address <> "$B$3" Then Exit Sub
Target.Validation.InputMessage = Worksheets("hoja1").Range("a1")
If Target.Address <> "$B$4" Then Exit Sub
Target.Validation.InputMessage = Worksheets("hoja1").Range("a2")
End Sub

También he probado a copiar y pegar el código entero modificando solo
la celda ya tampoco funciona.
Gracias
Respuesta Responder a este mensaje
#3 Héctor Miguel
21/04/2006 - 04:39 | Informe spam
hola, jose !

... funciona bien... pero... y si quiero hacer esto en varias celdas?
He dejado el codigo asi pero solo funciona en la primera celda:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Address <> "$B$3" Then Exit Sub
Target.Validation.InputMessage = Worksheets("hoja1").Range("a1")
If Target.Address <> "$B$4" Then Exit Sub
Target.Validation.InputMessage = Worksheets("hoja1").Range("a2")
End Sub
Tambien he probado a copiar y pegar el codigo entero modificando solo la celda ya tampoco funciona.



cuando la 'situacion real'... comienza a ser 'diferente' de los supuestos [empleados al elaborar una propuesta]...
va siendo necesario modificar o [en ocasiones, incluso] cambiar totalmente las propuestas :D
-> CON los datos que expones: celdas con validacion: 'B3:B4' en la hoja_x
'toman' el texto de la hoja1 en una 'referencia a si mismas' de: MENOS 2 filas y MENOS una columna
[es decir... 'B3' toma de 'A1' y 'B4' toma de 'A2']...
prueba con las siguientes modificaciones -> en el mismo modulo de codigo de la hoja_x...
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Intersect(Target, Range("b3:b4")) Is Nothing Then Exit Sub
With Worksheets("hoja1")
Target.Validation.InputMessage = .Range(Target.Address).Offset(-2, -1)
End With
End Sub

si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.
Respuesta Responder a este mensaje
#4 ~ jose ~
22/04/2006 - 01:13 | Informe spam
Hola, me estoy volviendo loco, estoy haciendo unas pruebas para ampliar
un poco más éste código, pero claro, voy a tientas porque no se VBA.
Lo que quiero hacer es lo mismo pero con más celdas.
He conseguido que también me funcione la celda "e11" modificando esta
linea (dado que no tengo ni pu... idea, pues tiene su pequeño mérito,
no?):

If Intersect(Target, Range("b7:b14", ["e11"])) Is Nothing Then Exit Sub

pero no puedo poner mas celdas, he probado un montón de formas pero no
doy con ella.
Luego, también he tenido varios problemas:
Si pincho en una celda que no tiene valildación, se produce el error
'1004'
y también si tengo la hoja protegida, al desplazarme con el tabulador
sobre las celdas que tienen validación me sale este error:
" Se ha producido el error '-2147417848 (80010108)' en tiempo de
ejecución:
Error en el método 'InputMessage' de objeto 'Validation' "
Este error que podria ser, que al estar protegida la hoja no se puede
cambiar el texto del mensaje de la validación?
Otro error que también me dá es que después de meter datos en las
celdas de validación al ejecutar una macro que borra el contenido de
todas las celdas (para volver a empezar de cero) me dá el error
'1004', se marca de amarillo esta fila del código:
Target.Validation.InputMessage = .Range(Target.Address).Offset(2, -0)

Igual planteo lo que quiero hacer de otra forma, quizás me esté
complicando demasiado (por mi inexperiencia):
Tengo una hoja llamada Tarifa,(le dabamos el nombre de "hoja1") ahí
tengo los precios de un despiece de armarios, los precios están en las
celdas:
"b9:b16"
"e13"
"g13"
"b20:b26"
"e24"
"g24"
y alguna celda más...
En la hoja Facturar, (antes era "X") meto la cantidad de piezas que
empleo para cada armario (luego hay unas formulas que manejan estos
datos, pero ahi no es a lo que voy). Estas celdas son:
"b7:b14"
"e11"
"g11"
"b18:b24"
etc...
Lo que quiero es que al situarme en la celda "b7" me aparezca a 'modo
de mensaje' el precio que contiene la celda "b9" de la hoja Tarifa.

A mi se me habia ocurrido hacerlo mediante validación (como lo estamos
haciendo ahora), pero estas celdas no hace falta que tengan
validación, asi que si se te (os) ocurre de otra forma, me comentais,
vale?
Bueno, espero haberme explicado bien.
Un slaudo
Respuesta Responder a este mensaje
#5 Héctor Miguel
22/04/2006 - 03:27 | Informe spam
hola, jose !

[primero]... 're-confirmarte' el comentario 'inicial' de mi correo anterior... :))
-> cuando la 'situacion real'... comienza a ser 'diferente' de los supuestos [empleados al elaborar una propuesta]...
-> va siendo necesario modificar o [en ocasiones, incluso] cambiar totalmente las propuestas :D

[segundo]: de acuerdo con los nuevos comentarios y los nuevos rangos, puedes modificar el 'intersect' +/- a lo siguiente:
-> If Intersect(Target, Range("b7:b14,e11,g11,b18:b24,e22,g22")) Is Nothing Then Exit Sub
[toma nota que rangos 'distantes' se separan por una coma y los rangos contiguos 'se unen' por dos puntos] ;)

[tercero]: si el caso es que tienes proteccion en 'esa' hoja... necesitaras 'avisarle' a excel que 'tus' macros pueden 'brincarla' :))
-> copia/pega las siguientes lineas en el modulo de codigo del libro [ThisWorkbook]:
[practicamente] TODO lo que 'hagas por codigo'... pasara 'sin problemas'
Private Sub Workbook_Open()
Worksheets("facturar").Protect _
PassWord:="la MIsMA cOntRaSe#a qUe lE pUsISte", _
UserInterfaceOnly:=True
End Sub

[cuarto]: el error que recibes cuando 'otra' macro BORRA el contenido de las celdas con validacion...
-> se debe a que el evento 'Worksheet_SelectionChange' NO esta 'preparado' para 'manejar' rangos de celdas 'multiples' :-((
prueba modificando las primeras instrucciones en el mismo +/- a lo siguiente [incluyendo el 'nuevo' rango]...
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
If Intersect(Target, Range("b7:b14,e11,g11,b18:b24,e22,g22")) Is Nothing Then Exit Sub
With Worksheets("tarifa")
Target.Validation.InputMessage = .Range(Target.Address).Offset(2)
End With
End Sub

[quinto]: en cuanto a los demas 'errores' y alguna otra alernativa... [preguntarte]... hay mas datos 'en el tintero' ???

si cualquire duda [o informacion adicional]... comentas ?
saludos,
hector.

... haciendo unas pruebas para ampliar... este codigo, pero... voy a tientas porque no se VBA.
... quiero hacer... lo mismo pero con mas celdas.
He conseguido que tambien me funcione la celda "e11" modificando esta linea...
If Intersect(Target, Range("b7:b14", ["e11"])) Is Nothing Then Exit Sub
pero no puedo poner mas celdas, he probado un monton de formas pero no doy con ella.
... tambien he tenido varios problemas:
Si pincho en una celda que no tiene valildacion, se produce el error '1004'
y tambien si tengo la hoja protegida, al desplazarme... sobre las celdas que tienen validacion me sale este error:
Se ha producido el error '-2147417848 (80010108)' en tiempo de ejecucion:
Error en el metodo 'InputMessage' de objeto 'Validation' "
Este error que podria ser, que al estar protegida la hoja no se puede cambiar el texto del mensaje de la validacion?
Otro error que tambien me da es que despues de meter datos en las celdas de validacion al ejecutar una macro
que borra el contenido de todas las celdas (para volver a empezar de cero) me da el error '1004'
se marca de amarillo esta fila del codigo: Target.Validation.InputMessage = .Range(Target.Address).Offset(2, -0)
Igual planteo lo que quiero hacer de otra forma, quizas me este complicando demasiado (por mi inexperiencia):
Tengo una hoja llamada Tarifa,(le dabamos el nombre de "hoja1") ahi tengo los precios de un despiece de armarios
los precios estan en las celdas: "b9:b16", "e13", "g13", "b20:b26", "e24", "g24" y alguna celda mas...
En la hoja Facturar, (antes era "X") meto la cantidad de piezas que empleo para cada armario
(luego hay unas formulas que manejan estos datos, pero ahi no es a lo que voy).
Estas celdas son: "b7:b14", "e11", "g11", "b18:b24", etc...
Lo que quiero es que al situarme en la celda "b7" me aparezca a 'modo de mensaje' el precio que contiene la celda "b9" de la hoja Tarifa.
... se me habia ocurrido hacerlo mediante validacion (como lo estamos haciendo ahora)
pero estas celdas no hace falta que tengan validacion, asi que si se te (os) ocurre de otra forma, me comentais, vale?
Bueno, espero haberme explicado bien.
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida