2013-09-13 3 views
0

Я скрытые строки с CheckBox макрокомандамиExcel Вставка строки - Использование именованных диапазонов Скрыть строки

Каждый раз, когда я хочу, чтобы вставить новую строку, код VBA испортятся и код, присваиваемый скрыть строки ниже не будет работа

есть способ динамически есть строки изменить код в VBA

Так что не придется переделывать все значения строки и флажки, которые перемещаются в процессе

[IMG ] http://i39.tinypic.com/2akek5z.jpg [/ IMG]


Sub CheckBox1_Click()

If Range("B3").Value = True Then 
    Rows("4:18").EntireRow.Hidden = False 
Else 
    Rows("4:18").EntireRow.Hidden = True 
End If 

End Sub

Sub CheckBox2_Click()

If Range("B51").Value = True Then 
    Rows("52:66").EntireRow.Hidden = False 
Else 
    Rows("52:66").EntireRow.Hidden = True 
End If 

End Sub

У меня есть около 10 subcheckboxes в коде


Если я вставляю или удаляю строку, код ниже не работает.

Это происходит потому, что строки изменились

из исходного кода, который я написал

+1

В этом случае вам нужно закодировать, чтобы отслеживать добавления, удаления и скрывать/скрывать строки и использовать также ссылки на динамические строки – rags

+1

, также вы должны показать нам некоторый код, чтобы мы можем помочь вам в вашей * реальной * проблеме – JMax

+0

Привет, я не уверен, какие динамические ссылки на строки – user2533460

ответ

0

Редактировать

использовать «именованные диапазоны» вместо жесткого кодирования диапазона. Именованный диапазон будет автоматически обновляться при вставке новой строки. Например:

I выбранные строки 9 через 13, и назвал их «RowsABC», как показано здесь:

enter image description here

Я также назвал свой флажок ячейки как «CheckABC», так что он больше не зависит от какие строки это в

Ваш код теперь выглядит следующим образом:.

If Range("CheckABC").Value = True Then 
    Range("RowsABC").EntireRow.Hidden = False 
Else 
    Range("RowsABC").EntireRow.Hidden = True 
End If 

Теперь вы можете выбрать строку, такие строки 10 и правой кнопкой мыши -> insert, а ваш макрос скроет строки 9:14 вместо 9:13, потому что именованный диапазон будет автоматически обновляться при вставке.

+0

Привет, спасибо за комментарии, я выложу код для вас с листа excel, я просто хочу, чтобы код обновлялся, если Я вставляю или удаляю строки – user2533460

+0

Привет, я не знаю, что итерация через них означает, мне придется изменить много кода, и я не уверен, как это сделать – user2533460

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