创建 vba 代码以显示一条消息,使其不会在某些工作表中出现重复项
Creating a vba code to show a message not to appear duplicates in some sheets
目前我有这个代码可以在食堂登记每天的所有膳食。
Sub register()
Dim s As Worksheet
Set s = Worksheets("Lista_" & Range("K9").Value)
Dim row As Long
row = s.Cells(s.Rows.Count, "B").End(xlUp).row + 1
s.Cells(row, "B").Value = Range("C7").Value
s.Cells(row, "C").Value = Range("C9").Value
s.Cells(row, "H").Value = Range("L9").Value
s.Cells(row, "I").Value = Range("P20").Value
s.Cells(row, "N").Value = Range("P21").Value
s.Cells(row, "O").Value = Range("P1").Value
Range("M6:M19").Select
Range("M19").Activate
Selection.ClearContents
Range("C7:D7").Select
Selection.ClearContents
Range("C7").Select
End Sub
--
如果某个员工的号码已经注册(以免重复),我希望有一条消息...为此,如果该号码已经注册,vba 代码应该在所有页面上搜索存在或 not.If 数字出现在以“Lista_”开头的工作表的 B 列中,应该出现一条消息
我想你只需要添加一个检查员工编号的函数
使用您的示例数据,类似的方法对我有用
您可以根据自己的情况更改常量和数据类型
Option Explicit
Sub register()
Dim s As Worksheet
Dim row As Long
Dim employeeNum As String
Set s = Worksheets("Lista_" & Range("K9").Value)
row = s.Cells(s.Rows.Count, "B").End(xlUp).row + 1
employeeNum = Range("C7").Value
If AlreadyRegistered(employeeNum) Then
MsgBox "Ignoring Preexisting Employee Number: " & employeeNum
Else
s.Cells(row, "B").Value = employeeNum
s.Cells(row, "C").Value = Range("C9").Value
s.Cells(row, "H").Value = Range("L9").Value
s.Cells(row, "I").Value = Range("P20").Value
s.Cells(row, "N").Value = Range("P21").Value
s.Cells(row, "O").Value = Range("P1").Value
Range("M6:M19").Select
Range("M19").Activate
Selection.ClearContents
Range("C7:D7").Select
Selection.ClearContents
Range("C7").Select
End If
End Sub
Function AlreadyRegistered(employeeNum As String) As Boolean
Const EmployeeColumn As String = "B:B"
Dim varSheets As Variant
Dim intSheet As Integer
Dim xlSheet As Worksheet
Dim rgeFound As Range
Dim i As Integer
AlreadyRegistered = False
varSheets = Array("Lista_AA", "Lista_BB", "Lista_CC")
For intSheet = LBound(varSheets) To UBound(varSheets)
Set xlSheet = Sheets(varSheets(i))
Set rgeFound = xlSheet.Range(EmployeeColumn).Find(employeeNum)
If Not (rgeFound Is Nothing) Then
AlreadyRegistered = True
Exit For
End If
Next intSheet
End Function
目前我有这个代码可以在食堂登记每天的所有膳食。
Sub register()
Dim s As Worksheet
Set s = Worksheets("Lista_" & Range("K9").Value)
Dim row As Long
row = s.Cells(s.Rows.Count, "B").End(xlUp).row + 1
s.Cells(row, "B").Value = Range("C7").Value
s.Cells(row, "C").Value = Range("C9").Value
s.Cells(row, "H").Value = Range("L9").Value
s.Cells(row, "I").Value = Range("P20").Value
s.Cells(row, "N").Value = Range("P21").Value
s.Cells(row, "O").Value = Range("P1").Value
Range("M6:M19").Select
Range("M19").Activate
Selection.ClearContents
Range("C7:D7").Select
Selection.ClearContents
Range("C7").Select
End Sub
--
如果某个员工的号码已经注册(以免重复),我希望有一条消息...为此,如果该号码已经注册,vba 代码应该在所有页面上搜索存在或 not.If 数字出现在以“Lista_”开头的工作表的 B 列中,应该出现一条消息
我想你只需要添加一个检查员工编号的函数
使用您的示例数据,类似的方法对我有用
您可以根据自己的情况更改常量和数据类型
Option Explicit
Sub register()
Dim s As Worksheet
Dim row As Long
Dim employeeNum As String
Set s = Worksheets("Lista_" & Range("K9").Value)
row = s.Cells(s.Rows.Count, "B").End(xlUp).row + 1
employeeNum = Range("C7").Value
If AlreadyRegistered(employeeNum) Then
MsgBox "Ignoring Preexisting Employee Number: " & employeeNum
Else
s.Cells(row, "B").Value = employeeNum
s.Cells(row, "C").Value = Range("C9").Value
s.Cells(row, "H").Value = Range("L9").Value
s.Cells(row, "I").Value = Range("P20").Value
s.Cells(row, "N").Value = Range("P21").Value
s.Cells(row, "O").Value = Range("P1").Value
Range("M6:M19").Select
Range("M19").Activate
Selection.ClearContents
Range("C7:D7").Select
Selection.ClearContents
Range("C7").Select
End If
End Sub
Function AlreadyRegistered(employeeNum As String) As Boolean
Const EmployeeColumn As String = "B:B"
Dim varSheets As Variant
Dim intSheet As Integer
Dim xlSheet As Worksheet
Dim rgeFound As Range
Dim i As Integer
AlreadyRegistered = False
varSheets = Array("Lista_AA", "Lista_BB", "Lista_CC")
For intSheet = LBound(varSheets) To UBound(varSheets)
Set xlSheet = Sheets(varSheets(i))
Set rgeFound = xlSheet.Range(EmployeeColumn).Find(employeeNum)
If Not (rgeFound Is Nothing) Then
AlreadyRegistered = True
Exit For
End If
Next intSheet
End Function