Formato de celdas con NIF

Necesito ayuda para crear una macro que sustituya en contenido de una celda con un DNI (8 dígitos), por este mismo número con puntos de separación de miles, seguido de un guion y la correspondiente letra del NIF. En excel la fórmula que calcula la letra es:
=("TRWAGMYFPDXBNJZSQVHLCKEF";1+RESIDUO(B4;23);1)
teniendo en B4 el DNI.
y en VB:
LetraNIF.Value = Mid$("TRWAGMYFPDXBNJZSQVHLCKE", (DNI.Value Mod 23) + 1, 1)
Pero no consigo crear la macro que automatice la tarea de cambiar el DNI por el NIF al salir de la celda.
1

1 Respuesta

2.215.690 pts. REGALA(TE) manuales Excel. Aprovecha el ciber-mes de...
Te adjunto un pequeño ejemplo para que veas cómo controla el cambio en la celda B4
(Se puede asignar un rango, por ejemplo: "B4:B20" )
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Application.Intersect(Target, Range("B4")) Is Nothing Then
dato = Range("B4").Value ?estas 3 instrucciones deberás reemplazarlas por las tuyas
letra = dato / 2
Range("D4").Value = letra
End If
End Sub
Hola Elsa, ante todo gracias por tu atención y tu respuesta.
El código que me proporcionaste me ha resultado ciertamente útil (y no solo para este caso), pero mi problema es colocar en la misma celda, tanto el dato DNI como la LETRA que define el algoritmo, una vez calculado. Y en el referido código, utilizamos dos celdas, "B4" para el DNI y "D4" para la letra. En realidad el formato resultante del calculo deseado seria "##.###.###-(letra)", y todo en una misma celda.
Gracias de nuevo.
JOSE. Sevilla (España)
Disculpa, pero pensé que solo necesitabas saber cual era el evento para controlar un cambio en una celda. Aquí va la rutina completa:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Application.Intersect(Target, Range("B4:B10")) Is Nothing Then
dato = Target.Value
valor = Right(dato, 1)
If IsNumeric(valor) Then
Target.Value = Format(dato, "##,###,###") & "-(" & letra & ")"
End If
End If
End Sub
Tendrás que modificar el rango (el ejemplo considera B4:B10)
Espero que ahora sí haya completado el tema. Si no me seguís consultando
El sitio ya se normalizó.
¿Podrías finalizar la consulta

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas