VBA VisibleCell 不可见

标签 vba excel

我遇到了一个问题,其中 CellIsInVisibleRange函数选择它不应该选择的单元格。

循环的代码如下:

wCount = 0
    loopCount = 0
    For Each wCell In wRange
        loopCount = loopCount + 1
        If CellIsInVisibleRange(wCell) Then
            MsgBox ("HERE IT BE")
            wCount = wCount + 1
            "codey-code"
        End If
    Next

对我来说失败的功能是:
Function CellIsInVisibleRange(cell As Range)

     CellIsInVisibleRange = Not Intersect(ActiveWindow.VisibleRange, cell) Is Nothing

End Function

发生的事情是,我有一个可见的行范围是 1、64、65、66。这个循环接受 应该在第 45 行可见 wCell。

我正在看这张纸,那一行绝对是不可见的。

你看到这个功能有什么问题吗?

谢谢。

编辑:

@KekuSemau

谢谢回复。该代码运行良好,但我想知道是否有更有效的方法来执行此操作。行wCell.SpecialCells(xlCellTypeVisible)返回“类型不匹配”错误,但我觉得这样的事情会更快。我想我应该表明我也声明了我正在寻找的范围。
Set wRange = Range("$" & nameColumnLetter & "$1:$" & nameColumnLetter & "$" & lastRow)
    wCount = 0
    loopCount = 0
    For Each wCell In wRange
        loopCount = loopCount + 1
        'If CellIsInVisibleRange(wCell) Then
        If wCell.SpecialCells(xlCellTypeVisible) Then
            code
            code
            code
        End If
    Next

我在这里接近更快的方法吗?

再次感谢。

最佳答案

在我们开始讨论之前,我的工作正在进行中的回答,这是我将如何修改您的代码:

Set wRange = Range("$" & nameColumnLetter & "$1:$" & nameColumnLetter & "$" & lastRow)
    wCount = 0
    'counts blanks and non-blanks, changed from original based on my guess of what you want
    loopCount = wRange.Count 
    Set wRange2 = wRange.SpecialCells(xlCellTypeVisible)
    For Each wCell In wRange2
        code
        code
        code
    Next wCell

关于VBA VisibleCell 不可见,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31010675/

相关文章:

Excel VBA - 设置单元格颜色时的 VLookup

r - 从 R 锁定 Excel 文件中的特定单元格,同时保留格式

vba - "if not instr"无法像我想象的那样在 vba 中工作

vba - 如何将颜色应用于 xlHairline

vba - Excel VBA - 工作表类的复制方法失败 - 用于正常运行

python - 使用 python 查找 Excel 中的列中是否存在某个值

java - 如何使用 servlet 将其制作为可下载的 Excel 文件

excel - 下标超出范围 - Excel

excel - 为什么 'AND' 在这里不工作,而 'OR' 在这里工作?

Excel 宏在 Catia V5 中不起作用