删除重复项正在影响另一个宏
Removing Duplicates is affecting another macro
我们 运行 工作表上有多个宏。其中之一用于删除重复项。
Sub Remove_Duplicates()
'
'
Application.ScreenUpdating = False
Call Convert_Text_To_Number
Cells.Select
ActiveSheet.Range("$A:$AE00").RemoveDuplicates Columns:=Array(10, 11, 12, 13, 14, 15, 16), Header:=xlYes
ActiveWindow.SmallScroll Down:=6
Range("C" & Rows.Count).End(xlUp).Offset(1).Select
Application.ScreenUpdating = True
End Sub
我们将一组数据从一个工作表复制到我们的主工作簿中。这个"new"数据占用A2:Z*(我用星号是因为行数没有限制,每天都在增加数据)。当我们 运行 与另一个数据集进行比较时,我们会(手动)将新信息输入到每个完整行的列 AA:AE 中。一旦将日期插入到相应行的 AE 列中,就有一个代码可以将整行的文本颜色更改为绿色:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim r As Range
Set r = Target.EntireRow
If Target.row = 1 Then Exit Sub 'don't change header color
If r.Cells(1, "AD").Value <> "" Then
r.Font.Color = RGB(0, 176, 80)
Else
r.Font.Color = RGB(0, 0, 0)
End If
End Sub
(以上代码插入到工作簿的Sheet1对象中)
添加此代码后,每次我们 运行 Remove Duplicates 宏时,所有保留的唯一行现在都更改为绿色文本,但该行的 AE 列中没有日期。我确实发现,如果我转到该单元格,点击删除并转到另一个单元格,该行将恢复为黑色文本。谁能帮我确定是什么导致了这种情况发生?单元格中似乎插入了一个幻像值。
你认为Target是某个单独的单元格,但它不是。它可能 是单个单元格,但在删除重复项命令中,它更有可能是单元格行。您不能通过使用 Target.EntireRow
将一大群细胞视为单个细胞。
示例:Range("A2").EntireRow
不同于 Range("A2:AD50").EntireRow
以下应该为您指明正确的方向。
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rw As Long, rwRng As Range
For Each rwRng In Target.Rows
If rwRng.Row > 1 Then
If Cells(rwRng.Row, 30).Value <> "" Then 'column AD is column 30
rwRng.Font.Color = RGB(0, 176, 80)
Else
rwRng.Font.ColorIndex = xlAutomatic
End If
End If
Next rwRng
End Sub
我们 运行 工作表上有多个宏。其中之一用于删除重复项。
Sub Remove_Duplicates()
'
'
Application.ScreenUpdating = False
Call Convert_Text_To_Number
Cells.Select
ActiveSheet.Range("$A:$AE00").RemoveDuplicates Columns:=Array(10, 11, 12, 13, 14, 15, 16), Header:=xlYes
ActiveWindow.SmallScroll Down:=6
Range("C" & Rows.Count).End(xlUp).Offset(1).Select
Application.ScreenUpdating = True
End Sub
我们将一组数据从一个工作表复制到我们的主工作簿中。这个"new"数据占用A2:Z*(我用星号是因为行数没有限制,每天都在增加数据)。当我们 运行 与另一个数据集进行比较时,我们会(手动)将新信息输入到每个完整行的列 AA:AE 中。一旦将日期插入到相应行的 AE 列中,就有一个代码可以将整行的文本颜色更改为绿色:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim r As Range
Set r = Target.EntireRow
If Target.row = 1 Then Exit Sub 'don't change header color
If r.Cells(1, "AD").Value <> "" Then
r.Font.Color = RGB(0, 176, 80)
Else
r.Font.Color = RGB(0, 0, 0)
End If
End Sub
(以上代码插入到工作簿的Sheet1对象中) 添加此代码后,每次我们 运行 Remove Duplicates 宏时,所有保留的唯一行现在都更改为绿色文本,但该行的 AE 列中没有日期。我确实发现,如果我转到该单元格,点击删除并转到另一个单元格,该行将恢复为黑色文本。谁能帮我确定是什么导致了这种情况发生?单元格中似乎插入了一个幻像值。
你认为Target是某个单独的单元格,但它不是。它可能 是单个单元格,但在删除重复项命令中,它更有可能是单元格行。您不能通过使用 Target.EntireRow
将一大群细胞视为单个细胞。
示例:Range("A2").EntireRow
不同于 Range("A2:AD50").EntireRow
以下应该为您指明正确的方向。
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rw As Long, rwRng As Range
For Each rwRng In Target.Rows
If rwRng.Row > 1 Then
If Cells(rwRng.Row, 30).Value <> "" Then 'column AD is column 30
rwRng.Font.Color = RGB(0, 176, 80)
Else
rwRng.Font.ColorIndex = xlAutomatic
End If
End If
Next rwRng
End Sub