2015-01-06 5 views
0

Я новичок в VBA и у меня проблемы с изучением правил переменных (я думаю, что здесь проблема).Excel VBA для сокрытия ячеек в одном листе, если они соответствуют ячейкам на другом листе

У меня есть два листа в электронной таблице. Мне нужно сделать код, который автоматически скрывает строку на листе 2, если то же значение в столбце a находится на листе 1, столбец a.

Вот один из вариантов кода, которые я пробовал:

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».

Может ли кто-нибудь помочь в этом? Какую концепцию мне не хватает?

Большое спасибо за ваше время.

+0

Являются ли записи на строках «Лист1» и «Лист2»? Слова (т. Е. Строки)? У вас есть суть этого, но вам нужно будет перебирать диапазоны по ячейкам для сравнения значений. –

+0

Они будут числами, спасибо! – msim

ответ

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) 
    

Удачи!

Смежные вопросы