¿Cómo escribir una verificación de Excel para la entrada repetida de datos y el guardado automático en la programación VB?
Evento 'SheetChange, que se activa cuando cambia el valor de la celda
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim s As String
With Target 'Para reducir las llamadas a objetos, use la instrucción With
If .Value = "" Then Exit Sub 'El valor está vacío, salga
s = Left (Format(.Value), 6) 'Toma los 6 dígitos en el lado izquierdo de la celda
Si .Column = 1 O .Column = 2 Entonces
Si (. Columna = 1 Y s <> "131754") _
O (.Columna = 2 Y s <> "860584") Entonces 'Si los 6 dígitos a la izquierda de la etiqueta de red no son 131754, se mostrará un error
MsgBox "¡Error de entrada! ¡Compruebe la categoría de entrada actual!"
.Select
.Value = ""
Else
If Not IsRepeat(Target, 2) Then 'Compruebe si hay valores repetidos en la columna actual (verifique desde la fila 2)
If .Column = 1 Luego
Celdas (.Fila, . Columna + 1). Seleccionar
Otra opción
Celdas (.Fila + 1, .Columna - 1). Seleccionar
End If
ThisWorkbook.Save 'Guardar el archivo
End If
End If
End If
Terminar con
End Sub
'El siguiente código se inserta en el módulo para verificar si hay valores duplicados en la misma columna
Función IsRepeat(ByVal Target As Range, ByVal lngBeginRow As Long) Como booleano
Dim strCol Como cadena, strRow Como cadena, lngEndRow As Long, curValue
Dim s( ), countMemo As Long, cx As Long
Dim intRep As Integer
Si lngBeginRow < 1, entonces salga de la función
'Valor de entrada
curValue = Target.Value
'Coloque todos los valores de la columna actual en valores numéricos y calcule la longitud del valor
strRow = Format(lngBeginRow)
strCol = Reemplazar(Reemplazar(Celdas(1
, Target.Column).Address, "$", ""), "1", "")
lngEndRow = ActiveSheet.UsedRange.Rows.Count
s = Range( strCol & strRow & ":" & strCol & Format(lngEndRow))
countMemo = UBound(s)
'Compruebe si hay valores duplicados
Para cx = 1 Para contarMemo
Si curValue = s(cx, 1) Entonces
intRep = intRep + 1
Si intRep = 2 Entonces'Regresar con duplicado valores IsRepeat = True
Salir de la función
Finalizar si
Finalizar si
Siguiente
Finalizar función
Siguiente
Finalizar función p>