最近更新于 2024-10-25 17:35
前言
公司生产的零件产品会打上二维码,然后使用扫码枪扫描录入系统,便于追溯。这里我用 Excel 实现了一个简易的“数据库”。
环境
Microsoft Office 2021
方案
打开 Excel,新建一个表格,按Alt
+F11
打开VBA编辑器,在左侧找到使用的工作表,比如我这里是Sheet1,就双击打开
然后复制粘粘下面内容后,直接关闭编辑骑窗口
Private Sub Worksheet_Change(ByVal Target As Range)
Dim ws As Worksheet
Dim LastRow As Long
Dim i As Long
Dim InputStr As String
' 确保仅在A1单元格变化时执行
If Target.Address = "$A$1" Then
Set ws = ThisWorkbook.Sheets("Sheet1") '根据需要修改工作表名称
InputStr = Target.Value
' 如果输入为空,则不处理
If InputStr = "" Then Exit Sub
' 检查是否有重复
LastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
For i = 2 To LastRow
If ws.Cells(i, 1).Value = InputStr Then
MsgBox "输入内容重复,请重新输入。", vbExclamation
ws.Cells(1, 1).Select
Exit Sub
End If
Next i
' 无重复,插入数据并下移其他内容
ws.Rows(2).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
ws.Cells(2, 1).Value = InputStr
ws.Cells(2, 2).Value = Format(Now, "yyyy-mm-dd")
ws.Cells(2, 3).Value = Format(Now, "hh:nn:ss")
' 清空A1,保持光标在A1
Application.EnableEvents = False
ws.Cells(1, 1).Value = ""
Application.EnableEvents = True
ws.Cells(1, 1).Select
End If
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Application.Intersect(Target, Me.Range("A1")) Is Nothing Then
' 允许在A1单元格中选择和输入
Application.EnableEvents = True
Else
' 如果当前单元格不是A1,则切换到A1
Application.EnableEvents = False
Me.Range("A1").Select
Application.EnableEvents = True
End If
End Sub
在 Sheet1 工作表中首先会锁定活动单元格为A1,只在A1单元格输入内容,我分别输入
“ABC”、“abc”,每次输入后回车,会得到下面内容
每次回车输入的内容会插入到A2,并且在后面两列分别插入输入的日期和时间。
当输入重复内容时
Excel 基于 VBA 实现序列号录入(查重、记录时间)