.
Hola, Andy
Efectivamente, estaban conviviendo distintas instrucciones que conflictuaban a VBA
Entonces modifiqué el código para que analice qué hacer en cada columna, quedando más ordenado.
La rutina considera si el cambio se hace debajo de los títulos (hay variable nueva para que le indiques en qué linea están. Caso contrario, o si la celda pasa a estar vacía, sale de la rutina.
Es decir que según la columna donde se haga el cambio hará una cosa u otra.
Verás en la estructura Select Case, qué hace en qué columna(s).
Reemplaza el código anterior en esa hoja por el siguiente:
Private Sub Worksheet_Change(ByVal Target As Range)
'---- Variables modificables:
FilaTit = 9 ' Fila donde están los títulos del cuadro
Fechaini = "01/01/2017"
'---- fin Variables
'
'---- inicio de rutina:
If Target.Row < FilaTit Or IsEmpty(Target) Then
Exit Sub
Else
Fechaini = CDate(Fechaini)
Select Case Target.Column
'
Case 5, 9, 10 'columnas a convertir a MAYUSCULAS
If Len(Target) Then Target.Value = UCase(Target.Value)
'
Case 2 'Columna donde se ingresa el R.U.N.
If Len(Target) = 9 Then
Target = Left(Target, 2) & "." & Mid(Target, 3, 3) & "." & Mid(Target, 6, 3) & "-" & Right(Target, 1)
ElseIf Len(Target) = 8 Then
Target = Left(Target, 1) & "." & Mid(Target, 2, 3) & "." & Mid(Target, 5, 3) & "-" & Right(Target, 1)
End If
'
Case 7 ' columna donde se ingresa la fecha
If Date = Fechaini And Target.Offset(-1, 1) <> 1 Then
Target.Offset(0, 1).Value = 1
Else
Target.Offset(0, 1).Value = Target.Offset(-1, 1) + 1
End If
End Select
End If
End Sub
Espero que ahora sí te funcione OK. HAsta donde probé lo hacía
Un abrazo
Fer
.