Excel 发现重复项时的消息框
我试图让宏在C列中找到重复条目,然后创建一个消息框,显示“找到重复值,请仔细检查”,下面是我的代码:Excel 发现重复项时的消息框,excel,vba,macros,Excel,Vba,Macros,我试图让宏在C列中找到重复条目,然后创建一个消息框,显示“找到重复值,请仔细检查”,下面是我的代码: Sub findduplicates() Range("C3").Select Do While ActiveCell.Value <> "" vtnaddress = ActiveCell.Address vtn = ActiveCell.Value Range("C3").Select Do
Sub findduplicates()
Range("C3").Select
Do While ActiveCell.Value <> ""
vtnaddress = ActiveCell.Address
vtn = ActiveCell.Value
Range("C3").Select
Do Until ActiveCell.Address = vtnaddress
If ActiveCell.Value = vtn Then
MsgBox "Duplicate VTN found, please check again"
Else
ActiveCell.Offset(1, 0).Select
End If
Loop
ActiveCell.Offset(1, 0).Select
Loop
End Sub
子findduplicates()
范围(“C3”)。选择
当ActiveCell.Value“”时执行此操作
vtnadress=ActiveCell.Address
vtn=ActiveCell.Value
范围(“C3”)。选择
直到ActiveCell.Address=vtNadAddress时为止
如果ActiveCell.Value=vtn,则
MsgBox“发现重复的VTN,请再次检查”
其他的
ActiveCell.Offset(1,0)。选择
如果结束
环
ActiveCell.Offset(1,0)。选择
环
端接头
我的问题是,消息框不断弹出(我必须杀死excel以清除msgbox),即使只找到1个重复值,是否因为它在循环中?我只希望msgbox在宏找到所有重复项后消失
谢谢基本上,当它找到一个重复单元时,您不会偏移活动单元。do-until循环不断地检查同一单元格。假设您只需要知道是否存在重复项,您可以通过添加“exit do”行进行修复,如下所示:
Sub findduplicates()
Range("C3").Select
Do While ActiveCell.Value <> ""
vtnaddress = ActiveCell.Address
vtn = ActiveCell.Value
Range("C3").Select
Do Until ActiveCell.Address = vtnaddress
If ActiveCell.Value = vtn Then
MsgBox "Duplicate VTN found, please check again"
Exit Do
Else
ActiveCell.Offset(1, 0).Select
End If
Loop
ActiveCell.Offset(1, 0).Select
Loop
End Sub
子findduplicates()
范围(“C3”)。选择
当ActiveCell.Value“”时执行此操作
vtnadress=ActiveCell.Address
vtn=ActiveCell.Value
范围(“C3”)。选择
直到ActiveCell.Address=vtNadAddress时为止
如果ActiveCell.Value=vtn,则
MsgBox“发现重复的VTN,请再次检查”
退出Do
其他的
ActiveCell.Offset(1,0)。选择
如果结束
环
ActiveCell.Offset(1,0)。选择
环
端接头
这就是说,您可能还希望在MsgBox中显示找到重复项的位置…基本上,当它找到重复项时,您不会偏移活动单元格。do-until循环不断地检查同一单元格。假设您只需要知道是否存在重复项,您可以通过添加“exit do”行进行修复,如下所示:
Sub findduplicates()
Range("C3").Select
Do While ActiveCell.Value <> ""
vtnaddress = ActiveCell.Address
vtn = ActiveCell.Value
Range("C3").Select
Do Until ActiveCell.Address = vtnaddress
If ActiveCell.Value = vtn Then
MsgBox "Duplicate VTN found, please check again"
Exit Do
Else
ActiveCell.Offset(1, 0).Select
End If
Loop
ActiveCell.Offset(1, 0).Select
Loop
End Sub
子findduplicates()
范围(“C3”)。选择
当ActiveCell.Value“”时执行此操作
vtnadress=ActiveCell.Address
vtn=ActiveCell.Value
范围(“C3”)。选择
直到ActiveCell.Address=vtNadAddress时为止
如果ActiveCell.Value=vtn,则
MsgBox“发现重复的VTN,请再次检查”
退出Do
其他的
ActiveCell.Offset(1,0)。选择
如果结束
环
ActiveCell.Offset(1,0)。选择
环
端接头
也就是说,您可能还希望在MsgBox中显示找到重复项的位置…使用标志来确定是否存在任何重复值。如果发现重复值,那么您还必须退出第一个Do While循环
Sub findduplicates()
Dim flagDuplicate As Boolean
Range("C3").Select
Do While ActiveCell.Value <> ""
If flagDuplicate Then
Exit Do
End If
vtnaddress = ActiveCell.Address
vtn = ActiveCell.Value
Range("C3").Select
Do Until ActiveCell.Address = vtnaddress
If ActiveCell.Value = vtn Then
MsgBox "Duplicate VTN found, please check again"
foundDuplicate = True
Exit Do
Else
ActiveCell.Offset(1, 0).Select
End If
Loop
ActiveCell.Offset(1, 0).Select
Loop
End Sub
子findduplicates()
Dim Flag复制为布尔值
范围(“C3”)。选择
当ActiveCell.Value“”时执行此操作
如果是,那么
退出Do
如果结束
vtnadress=ActiveCell.Address
vtn=ActiveCell.Value
范围(“C3”)。选择
直到ActiveCell.Address=vtNadAddress时为止
如果ActiveCell.Value=vtn,则
MsgBox“发现重复的VTN,请再次检查”
foundreplicate=True
退出Do
其他的
ActiveCell.Offset(1,0)。选择
如果结束
环
ActiveCell.Offset(1,0)。选择
环
端接头
使用标志确定是否存在任何重复值。如果发现重复值,那么您还必须退出第一个Do While循环
Sub findduplicates()
Dim flagDuplicate As Boolean
Range("C3").Select
Do While ActiveCell.Value <> ""
If flagDuplicate Then
Exit Do
End If
vtnaddress = ActiveCell.Address
vtn = ActiveCell.Value
Range("C3").Select
Do Until ActiveCell.Address = vtnaddress
If ActiveCell.Value = vtn Then
MsgBox "Duplicate VTN found, please check again"
foundDuplicate = True
Exit Do
Else
ActiveCell.Offset(1, 0).Select
End If
Loop
ActiveCell.Offset(1, 0).Select
Loop
End Sub
子findduplicates()
Dim Flag复制为布尔值
范围(“C3”)。选择
当ActiveCell.Value“”时执行此操作
如果是,那么
退出Do
如果结束
vtnadress=ActiveCell.Address
vtn=ActiveCell.Value
范围(“C3”)。选择
直到ActiveCell.Address=vtNadAddress时为止
如果ActiveCell.Value=vtn,则
MsgBox“发现重复的VTN,请再次检查”
foundreplicate=True
退出Do
其他的
ActiveCell.Offset(1,0)。选择
如果结束
环
ActiveCell.Offset(1,0)。选择
环
端接头
这将为在活动工作表的“C”列中发现的每个副本提示一条消息
Option Explicit
Sub FindDuplicates()
Dim cell As Range
With Intersect(ActiveSheet.Columns("C"), ActiveSheet.UsedRange)
For Each cell In .Cells
If WorksheetFunction.CountIf(.Resize(cell.Row - .Rows(1).Row + 1), cell.value) > 1 Then MsgBox "Duplicate '" & cell.value & "' in " & cell.Address
Next cell
End With
End Sub
这将为活动工作表的“C”列中发现的每个重复项提示一条消息
Option Explicit
Sub FindDuplicates()
Dim cell As Range
With Intersect(ActiveSheet.Columns("C"), ActiveSheet.UsedRange)
For Each cell In .Cells
If WorksheetFunction.CountIf(.Resize(cell.Row - .Rows(1).Row + 1), cell.value) > 1 Then MsgBox "Duplicate '" & cell.value & "' in " & cell.Address
Next cell
End With
End Sub