Cas*_*eia 1 excel vba excel-vba
我正在尝试编写一个脚本来检查另一个工作表中的重复值,但我无法让它工作.在行problem的.如果功能始终进行,是否设置为If Not或If.LocationCell确实无所不能.
我确信这是一个明显的错误,但我无法理解.
Sub mailer_followuptest()
Application.ScreenUpdating = False
'Remove matching contacts data from last run
Dim wsDel As Worksheet
Application.DisplayAlerts = False
Err.Clear
On Error Resume Next
Set wsDel = Sheets("Matching Contacts")
wsDel.Delete
Dim mailerSheet As Worksheet
Set mailerSheet = Worksheets("Call data")
Set MatchingContacts = Sheets.Add
MatchingContacts.Name = "Matching Contacts"
Dim DesiredEntry As String
Dim CRMContacts As Worksheet
Set CRMContacts = Worksheets("CRM contacts")
CRMContacts.Select
Range("A1").Select
Do
ActiveCell.Offset(1, 0).Select
DesiredEntry = ActiveCell.Value
With Sheets(mailerSheet).Range("A:A")
Dim LocatedCell As Range
Set LocatedCell = .Find(What:=DesiredEntry, SearchOrder:=xlByRows, LookAt:=xlPart)
problem: If Not LocatedCell = "Nothing" Then
'With_
LocatedCell.EntireRow.Copy_
'.Interior.ColorIndex = 4 'green
'End With
MatchingContacts.Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
ActiveCell.Offset(1, 0).Select
End If
End With
CRMContacts.Select
Loop Until ActiveCell.Value = ""
Application.ScreenUpdating = True
End Sub
Run Code Online (Sandbox Code Playgroud)
另外,我正确使用find吗?它似乎也没有工作.
Dmi*_*liv 12
On Error Resume Next 明智地使用.不要On Error Resume Next用于整个代码 - 它会隐藏所有错误.只有在真正需要时才使用它.
使用On Error Resume Next意味着告诉代码Shut UP并执行您想要的操作.在大多数情况下,它会做你想要的......关闭并执行......但是你将无法获得预期的结果或完全错误的结果,如下所示!(SiddharthRout©:)

更改
Err.Clear
On Error Resume Next
Set wsDel = Sheets("Matching Contacts")
wsDel.Delete
Run Code Online (Sandbox Code Playgroud)
至
On Error Resume Next
Set wsDel = Sheets("Matching Contacts")
On Error GoTo 0
If Not wsDel Is Nothing Then wsDel.Delete
Run Code Online (Sandbox Code Playgroud)
line On Error GoTo 0会将错误处理程序返回到默认模式.
您的代码存在一些问题:
1)在行中If Not LocatedCell = "Nothing" Then你试图确定你的单元格值是否不等于字符串 "Nothing",这是不正确的.
要检查.Find函数是否返回任何单元格,请更改
If Not LocatedCell = "Nothing" Then
Run Code Online (Sandbox Code Playgroud)
至
If Not LocatedCell Is Nothing Then
Run Code Online (Sandbox Code Playgroud)
2)变化With Sheets(mailerSheet).Range("A:A")到With
mailerSheet.Range("A:A")
3)正如@SiddharthRout在下面的评论中提到的,
副本必须在粘贴特殊之前.如果您执行某些特定操作,Excel以清除剪贴板而闻名
如果您要更改内部颜色并复制行,请更改
'With_
LocatedCell.EntireRow.Copy_
'.Interior.ColorIndex = 4 'green
'End With
Run Code Online (Sandbox Code Playgroud)
至
With LocatedCell.EntireRow
.Interior.ColorIndex = 4 'green
.Copy
End With
Run Code Online (Sandbox Code Playgroud)