Edmund8
New Member
- Joined
- Dec 11, 2010
- Messages
- 4
Hola:
He encontrado un código en la web que suple mis necesidades, sin embargo no he podido adaptarlo a mi archivo.
Me encantaría la ayuda de algún experto para lo siguiente: El código automáticamente arregla lo escrito a formato de Nombre Propio, pero lo hace en toda una columna. Yo solo necesito que el evento se de en la celda D4 para dos nombres y D6 para dos apellidos. Lo que me gusta del código es que cobre todas las variantes habidas y por haber referente a nombres y apellidos.
El código es el siguiente:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim vnp As String: Dim i As Integer: Dim ve As String
Dim viz As Boolean: Dim vde As Boolean: Dim vl As Integer
Dim vle As Integer
With Target
If .Column <> 1 Or .Rows.Count > 1 Then Exit Sub
If .Value = "" Then Exit Sub
End With
vnp = Target: vnp = VBA.StrConv(vnp, vbProperCase)
vnp = VBA.Replace(vnp, " De", " de")
vnp = VBA.Replace(vnp, " La", " la")
For i = 1 To VBA.Len(vnp)
ve = VBA.Mid(vnp, i, 3)
viz = VBA.Mid(ve, 1, 1) = " ": vde = VBA.Mid(ve, 3, 1) = " "
If viz And vde Then vnp = VBA.Replace(vnp, ve, VBA.RTrim(ve) & ". ")
vl = VBA.Len(ve): vle = VBA.InStr(1, ve, " ", vbTextCompare)
If vl = 2 And vle Then vnp = vnp & "."
Next
Target = vnp
End Sub
Gracias mil de antemano, por su ayuda!!!
He encontrado un código en la web que suple mis necesidades, sin embargo no he podido adaptarlo a mi archivo.
Me encantaría la ayuda de algún experto para lo siguiente: El código automáticamente arregla lo escrito a formato de Nombre Propio, pero lo hace en toda una columna. Yo solo necesito que el evento se de en la celda D4 para dos nombres y D6 para dos apellidos. Lo que me gusta del código es que cobre todas las variantes habidas y por haber referente a nombres y apellidos.
El código es el siguiente:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim vnp As String: Dim i As Integer: Dim ve As String
Dim viz As Boolean: Dim vde As Boolean: Dim vl As Integer
Dim vle As Integer
With Target
If .Column <> 1 Or .Rows.Count > 1 Then Exit Sub
If .Value = "" Then Exit Sub
End With
vnp = Target: vnp = VBA.StrConv(vnp, vbProperCase)
vnp = VBA.Replace(vnp, " De", " de")
vnp = VBA.Replace(vnp, " La", " la")
For i = 1 To VBA.Len(vnp)
ve = VBA.Mid(vnp, i, 3)
viz = VBA.Mid(ve, 1, 1) = " ": vde = VBA.Mid(ve, 3, 1) = " "
If viz And vde Then vnp = VBA.Replace(vnp, ve, VBA.RTrim(ve) & ". ")
vl = VBA.Len(ve): vle = VBA.InStr(1, ve, " ", vbTextCompare)
If vl = 2 And vle Then vnp = vnp & "."
Next
Target = vnp
End Sub
Gracias mil de antemano, por su ayuda!!!