简体   繁体   中英

Excel VBA for hiding cells in one sheet if they match cells in another sheet

I am new to VBA and am having problems learning the rules of variables (I think that's the problem here).

I have two worksheets in a spreadsheet. I need to make code that automatically hides a row on worksheet 2 if that same value in column a is on worksheet 1, column a.

Here's one of the variations of code I've tried:

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

I get a type mismatch error but I'm not sure exactly why. I chose variant because I don't know what I'm doing, but both columns in excel will be set to "General".

Can anyone help with this? What concept am I missing?

Thanks so much for your time.

Few things:

  1. you cannot compare entire column:

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

    you need to loop through the collection of cells, see this: Fast compare method of 2 columns

  2. you cannot hide row without defining a range to hide

     Sheets("BMAC=N").Range("Some_address").EntireRow.Hidden 
  3. Finally, i'd suggest to change your code to shortest way:

     Sheets("BMAC=N").Range("A1").EntireRow.Hidden = (value1<>value2) 

Good luck!

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM