Excel VBA – 如何检查隐藏范围内的非空值

我将首先明确目标,然后充分解释。

我的目标是检查范围内的非空白值,但仅限于该范围的隐藏单元格 ,然后在不同的单元格中使用条件格式,具体取决于范围内的单元格是否为空。

我有一个名为Location_Address_RangeCheck的命名范围,它覆盖了位置编号右侧的单元格,就像这样(位置编号不是范围的一部分)。 当位置数量发生变化时,超出该数字的行(最多25个)将自动隐藏在worksheet_change上,以减less混乱,并减less滚动查看下面的内容。 该代码工作正常,所以我不在这里发布,以免混淆任何人与我想要完成。

我想提供一个安全措施,以确保在隐藏行中没有可能影响输出的值(例如,如果某人select“3”作为位置数量,但单元格中的数据可能位于第八位)。

我的目标是检查范围内的非空白值,但仅在隐藏的单元格中 ,然后在所选位置数旁边的单元格中使用条件格式,具体取决于范围中的单元格是否为空。

所以如果隐藏的单元格中有数据,那么会导致表单看起来像这样

到目前为止我已经尝试了很多不同的东西,但是我没有取得任何进展。 我search了互联网,试图find一个解决scheme,但我发现的一切都是关于在可见的单元格中寻找东西,这与我试图达到的目的相反。

这是我迄今写的代码,我知道没有达到我的目标:

Sub testhiddencells() Dim myRange As Range Set myRange = Range("Location_Address_RangeCheck") NumRows = Application.WorksheetFunction.CountA(myRange) If Range("Location_Address_RangeCheck").Hidden = True Then If Application.WorksheetFunction.CountA(Range("Location_Address‌​_RangeCheck")) <> 0 Then MsgBox "There's something there" End If End If End Sub 

下面是一个用单元格检查的最小例子,它既是隐藏的也是非空的:

 Option Explicit Sub Test() Dim ws As Worksheet Dim rngToCheck As Range 'test range - all cells populated with 'a' and 3 are hidden Set ws = ThisWorkbook.Worksheets("Sheet1") Set rngToCheck = ws.Range("A1:A7") If TestForNonBlankCellsInHiddenRange(rngToCheck) Then 'do you conditional format stuff here End If End Sub Function TestForNonBlankCellsInHiddenRange(rngToCheck As Range) As Boolean Dim rngCell As Range Dim blnCheck As Boolean 'assume that hidden cells are blank blnCheck = False 'iterate range For Each rngCell In rngToCheck If rngCell.EntireRow.Hidden And Not IsEmpty(rngCell.Value) Then 'found a hidden and non-empty cell blnCheck = True 'debug address of this cell Debug.Print rngCell.Address End If Next rngCell 'return check TestForNonBlankCellsInHiddenRange = blnCheck End Function 

看看你已经使用的代码,你应该能够适应你的工作表的特定用例。