Convertir a mayusculas

10/09/2007 - 18:27 por Jaime Javier Hernández M. | Informe spam
Hola:
Estoy usando esta macro para convertir a mayusculas lo que el usuario
introduce en la Columna K (11)
Funciona bien excepto cuando el usuario elimina el contenido de la celda en
esa columna
Pues a partir de ese momento ninguna celda de la columna se vuelve a
convirtir a mayusculas

¿Como puede hacerse para que funcione bien aun despues de borrar una celda
de la columna 11?

Es un Excel 2007 en windows xp

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
On Error GoTo Err_Change
If Target.Column = 11 Then
Target.Value = UCase(Target.Value)
End If
Err_Change:
Err.Clear
End Sub

Saludos

Preguntas similare

Leer las respuestas

#1 David
10/09/2007 - 19:10 | Informe spam
Creo que el detectar el error está de más.

El problema ocurre cuando el mismo código altera el contenido de la celda,
lo que da origen a una ejecución en bucle del mismo. Me explico. Si pones
"a", VBA lo cambia a "A", y se dispara nuevamente el evento, cambiando el
contenido de la celda a "A", y se vuelve a disparar el evento, etc, y etc, y
etc, hasta producir un desbordamiento, que es lo que te detecta el "On Error"

Te sugeriría utilizar una variable de control, local en el módulo, para
detectar cuándo el cambio se ha producido por el usuario, y cuándo por el
evento. Algo así:


'--
Private x As Boolean

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
If Target.Column = 11 Then
If x = False Then
x = True
Target.Value = UCase(Target.Value)
Else
x = False
End If
End If
End Sub
'

Comentas los resultados.



"Jaime Javier Hernández M." escribió:

Hola:
Estoy usando esta macro para convertir a mayusculas lo que el usuario
introduce en la Columna K (11)
Funciona bien excepto cuando el usuario elimina el contenido de la celda en
esa columna
Pues a partir de ese momento ninguna celda de la columna se vuelve a
convirtir a mayusculas

¿Como puede hacerse para que funcione bien aun despues de borrar una celda
de la columna 11?

Es un Excel 2007 en windows xp

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
On Error GoTo Err_Change
If Target.Column = 11 Then
Target.Value = UCase(Target.Value)
End If
Err_Change:
Err.Clear
End Sub

Saludos



Respuesta Responder a este mensaje
#2 Jaime Javier Hernández M.
10/09/2007 - 19:27 | Informe spam
David:
Gracias , Funciona perfecto
Era bastante logico que se dispararía el mismo evento una y otra vez pero
por mi falta de experiancia no lo habia previsto
Saludos

"David" escribió en el mensaje
news:
Creo que el detectar el error está de más.

El problema ocurre cuando el mismo código altera el contenido de la celda,
lo que da origen a una ejecución en bucle del mismo. Me explico. Si
pones
"a", VBA lo cambia a "A", y se dispara nuevamente el evento, cambiando el
contenido de la celda a "A", y se vuelve a disparar el evento, etc, y etc,
y
etc, hasta producir un desbordamiento, que es lo que te detecta el "On
Error"

Te sugeriría utilizar una variable de control, local en el módulo, para
detectar cuándo el cambio se ha producido por el usuario, y cuándo por el
evento. Algo así:


'--
Private x As Boolean

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As
Range)
If Target.Column = 11 Then
If x = False Then
x = True
Target.Value = UCase(Target.Value)
Else
x = False
End If
End If
End Sub
'

Comentas los resultados.



"Jaime Javier Hernández M." escribió:

Hola:
Estoy usando esta macro para convertir a mayusculas lo que el usuario
introduce en la Columna K (11)
Funciona bien excepto cuando el usuario elimina el contenido de la celda
en
esa columna
Pues a partir de ese momento ninguna celda de la columna se vuelve a
convirtir a mayusculas

¿Como puede hacerse para que funcione bien aun despues de borrar una
celda
de la columna 11?

Es un Excel 2007 en windows xp

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As
Range)
On Error GoTo Err_Change
If Target.Column = 11 Then
Target.Value = UCase(Target.Value)
End If
Err_Change:
Err.Clear
End Sub

Saludos



email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida