当表格列中的所有单元格都具有特定值时,如何运行VBA代码?

时间:2019-06-25 17:58:10

标签: vba

当过滤的表格列中的所有单元格都包含某个值时,我正在尝试在工作表中运行代码。如何引用表格列而不是单个单元格?

我正在使用Worksheet_Change。

当我在范围内使用单个单元格值时,代码起作用,但是当我将列引用用作范围时,出现“运行时错误'13':类型不匹配”错误。

rails db:migrate

我希望它能工作,因为我可以运行代码:

Private Sub Worksheet_Change(ByVal Target As Range)

If Range("n2").Value = "P" Then
'If Range("Table1[Verify]").Value = "P" Then

    ActiveSheet.Shapes("Oval 5").Visible = True

ElseIf Range("n2").Value <> "P" Then
'ElseIf Range("Table1[Verify]").Value <> "P" Then

    ActiveSheet.Shapes("Oval 5").Visible = False

End If

End Sub

,并使用值“ P”填充过滤的列“ Verify”中的每个单元格。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

Range("Table1[Verify]").Value

返回一个二维值数组(行数x列数),因此您无法将其与“ P”进行比较。仅当只有一个可见行时,该行才有效(因为在这种情况下,.Value不是数组)

仅对于可见单元格,您将需要以下内容:

Dim rng As Range
Set rng = Range("Table1[Verify]").SpecialCells(xlCellTypeVisible)

然后循环遍历rng中的每个单元格并检查是否为“ P”

Dim c As range
For Each c in rng.Cells
     'check the value
Next c

除非rng是连续的,否则您不能使用application.countif(rng,"P")