【发布时间】:2019-04-12 02:31:10
【问题描述】:
我在使用 Excel VBA 时遇到的问题是,在按颜色 (RGB(1, 255, 1)) 在工作表上应用过滤器 ( SheetNameFromArray),然后将可见单元格复制到另一个具有相同名称 (SheetNameFromArray) 的工作簿 (workbookA) 工作表。
我尝试的解决方案涉及使用“Application.CountIf(range, condition)”来计算颜色为 RGB(1, 255, 1) 的单元格,然后如果有颜色的单元格,则继续过滤和复制.但是,由于某种原因,它似乎没有正确计算单元格,因为即使工作表在范围内具有该颜色的单元格,它也不会复制任何单元格(参见下面的示例):
LastSheetRow = Workbooks(WorkbookB).Sheets(SheetNameFromArray).Cells(Rows.Count, 1).End(xlUp).Row
LastSheetColumn = Workbooks(WorkbookB).Sheets(SheetNameFromArray).Cells(1, Columns.Count).End(xlToLeft).Column
WorkbookALastSheetRow = Workbooks(WorkbookA).Sheets(SheetNameFromArray).Cells(Rows.Count, 1).End(xlUp).Row
Dim rngWorkbookBToCopy As Range, rngWorkbookAToPaste As Range
With Workbooks(WorkbookB).Sheets(SheetNameFromArray)
Set rngWorkbookBToCopy = .Range(.Cells(2, 1), .Cells(LastSheetRow, LastSheetColumn - 1))
End With
With Workbooks(WorkbookA).Sheets(RevisionSheetNameFromArray)
Set rngWorkbookAToPaste = .Cells(WorkbookALastSheetRow, 1)
End With
If Application.CountIf(rngWorkbookBToCopy, RGB(1, 255, 1)) = 0 Then
Else
With Workbooks(WorkbookB).Worksheets(RevisionSheetNameFromArray)
.Range(.Cells(1, 1), .Cells(LastSheetRow, LastSheetColumn)).AutoFilter Field:=1, Criteria1:=RGB(1, 255, 1), Operator:=xlFilterCellColor
End With
rngWorkbookBToCopy.SpecialCells(xlCellTypeVisible).Copy rngWorkbookAToPaste
End If
我想做的是仅复制至少有一个以 RGB(96、255、210)着色的单元格的行范围。我添加了条件来检查是否有所述颜色的单元格,因为如果工作表没有单元格,则会出现范围 Autofilter 属性的错误。但是,正如我所说,它似乎没有正确计算单元格,我不确定如何解决它。
请帮助我并提前致谢(抱歉我的英语不好)
【问题讨论】:
标签: excel vba range countif autofilter