Visual Basic para Aplicaciones - Evento Change:Error cuando borro el contenido de una celda

Life is soft - evento anual de software empresarial
 
Vista:
sin imagen de perfil
Val: 9
Ha aumentado su posición en 2 puestos en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

Evento Change:Error cuando borro el contenido de una celda

Publicado por Angel (5 intervenciones) el 07/12/2017 10:12:54
Conseguí un código que convierte automáticamente la primera letra de una oración en mayúscula, y funciona bien. El problema surge cuando cuando borro el contenido de una celda,o cuando cambio el contenido de varias celdas a la vez, que me devuelve Error en tiempo de ejecución. Imagino que habrá alguna forma de controlar esto desde el mismo código.
Es un evento Change: Worksheet_Change(ByVal Target as Range)
Si alguien me pudiese ayudar......................Muchas gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Evento Change:Error cuando borro el contenido de una celda

Publicado por JuanC (565 intervenciones) el 07/12/2017 12:20:46
y que tal si publicás el libro o el código completo?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 9
Ha aumentado su posición en 2 puestos en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

Evento Change:Error cuando borro el contenido de una celda

Publicado por Angel (5 intervenciones) el 07/12/2017 17:39:44
Si, es cierto, a continuación escribo el código.

1
2
3
4
5
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Application.EnableEvents = False
Target.Value = UCase(Mid(Target.Value, 1, 1)) & Mid(Target.Value, 2, Len(Target.Value) - 1)
Application.EnableEvents = True
End Sub.

Este código lo obtuve desde un blog que no recuerdo ahora exactamente. Funciona correctamente, pero ya digo, cuando quiero borrar el contenido de una celda o cambiar varias celdas a la vez me salta un error en tiempo de ejecución.

Muchas gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Evento Change:Error cuando borro el contenido de una celda

Publicado por JuanC (565 intervenciones) el 07/12/2017 17:52:06
otra manera de hacer lo mismo...
(para evitar el error se usa On Error Resume Next)

1
2
3
4
5
6
7
8
9
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Dim cell As Range
On Error Resume Next
Application.EnableEvents = False
For Each cell In Target
    cell.Value = Excel.WorksheetFunction.Proper(cell.Value)
Next
Application.EnableEvents = True
End Sub
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 9
Ha aumentado su posición en 2 puestos en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

Evento Change:Error cuando borro el contenido de una celda

Publicado por Angel (5 intervenciones) el 08/12/2017 12:10:48
Hola Juan C, he probado el código y me funciona de maravilla, muchas gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 9
Ha aumentado su posición en 2 puestos en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

Evento Change:Error cuando borro el contenido de una celda

Publicado por Angel (5 intervenciones) el 08/12/2017 13:52:19
Otra cosa, me he dado cuenta ahora. Creía que este código convertía la primera letra de una oración en mayúscula, pero lo que hace es convertir la primera letra de cada palabra en mayúscula. Me gustaría que lo hiciera solamente con la primera letra,aunque escriba varias palabras en la misma celda...........ufffff no se si pido demasiado
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Evento Change:Error cuando borro el contenido de una celda

Publicado por JuanC (565 intervenciones) el 08/12/2017 14:33:52
cambiá
cell.Value = Excel.WorksheetFunction.Proper(cell.Value)
por
cell.Value = UCase(Mid(cell.Value, 1, 1)) & Mid(cell.Value, 2, Len(cell.Value) - 1)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 9
Ha aumentado su posición en 2 puestos en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

Evento Change:Error cuando borro el contenido de una celda

Publicado por Angel (5 intervenciones) el 08/12/2017 15:54:46
Ok perfecto Juan, muchas gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar