Excel VBA用于在单个工作表中匹配单元格时将单元格隐藏在一个工作表中

时间:2015-01-06 21:27:09

标签: excel vba excel-vba syntax row

我是VBA的新手,在学习变量规则方面遇到了问题(我认为这就是问题所在。)

我在电子表格中有两个工作表。如果列a中的相同值在工作表1的第a列上,我需要创建自动隐藏工作表2上的行的代码。

这是我尝试过的代码变体之一:

Dim Sheet2Value As Variant
Dim Sheet1Value As Variant
'
Sheet2Value = Sheets("Sheet2").Range("A:A").Value
Sheet1Value = Sheets("Sheet1").Range("A:A").Value
'
If Sheet2Value = Sheet1Value Then
    Sheets("BMAC=N").EntireRow.Hidden = False
Else
    Sheets("BMAC=N").EntireRow.Hidden = True
End If

我遇到类型不匹配错误,但我不确定原因。我选择了变体,因为我不知道自己在做什么,但是excel中的两列都将设置为" General"。

任何人都可以帮忙吗?我错过了什么概念?

非常感谢你的时间。

1 个答案:

答案 0 :(得分:0)

少数事情:

  1. 您无法比较整个列:

    Sheet2Value = Sheets("Sheet2").Range("A:A").Value
    

    您需要遍历单元格集合,请参阅:Fast compare method of 2 columns

  2. 如果没有定义要隐藏的范围,则无法隐藏行

    Sheets("BMAC=N").Range("Some_address").EntireRow.Hidden
    
  3. 最后,我建议将代码更改为最短路径:

    Sheets("BMAC=N").Range("A1").EntireRow.Hidden = (value1<>value2)
    
  4. 祝你好运!