如果当*值*是指定的那个时,Not函数继续
我试图编写一个脚本,检查另一个工作表中的重复值,但我不能得到它的工作。 在线路problem
,If函数总是继续,无论是否设置为If Not
或If
。 LocatedCell不等于Nothing。
我相信这是一个明显的错误,但我无法理解。
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
另外,我使用正确的查找? 它似乎也没有工作。
谨慎使用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
至
On Error Resume Next Set wsDel = Sheets("Matching Contacts") On Error GoTo 0 If Not wsDel Is Nothing Then wsDel.Delete
行On Error GoTo 0
将您的error handling程序返回到默认模式。
您的代码的一些问题:
1)在行If Not LocatedCell = "Nothing" Then
你试图确定你的单元格值是否不等于string “Nothing”是不正确的。
要检查.Find
函数是否返回任何单元格,请更改
If Not LocatedCell = "Nothing" Then
至
If Not LocatedCell Is Nothing Then
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
至
With LocatedCell.EntireRow .Interior.ColorIndex = 4 'green .Copy End With
4) ,当然还有: 如何避免使用Select / Active语句
- 无法将“microsoft.Office.Interop.Excel.ApplicationClass”types的COM对象转换为“microsoft.Office.Interop.Excel.Application”
- 是个 。 在.Cells中定义时需要。
- 在Windows中从Python驱动Excel
- 为什么我有问题分配一个范围到一个variables数组
- 如何在Excel中表示date时间
- 使用excel vba过滤掉多个条件
- 使用JavaScript / JQuery将HTML表格数据导出到Excel在Chrome浏览器中无法正常工作
- Excel range.Rows属性真的有什么用?
- 如何在HSSF(Apache POI)的现有Excel中的两行之间插入一行