#excel #vba #triggers #scrollbar
Вопрос:
У меня есть книга Excel с тремя динамическими полосами прокрутки на одной вкладке книги. Мне нужно динамически настроить «максимальное» значение полосы прокрутки на основе общего количества строк данных в исходной таблице. Я попытался использовать для этого следующий код; однако это настройка максимального значения для всех трех полос прокрутки на основе значения в ячейке S49, а не отдельная настройка полос прокрутки 1, 2 и 3 на основе значений в S49, S66 и S83 соответственно:
Private Sub ScrollBar1_Change()
ActiveSheet.ScrollBar1.Max = Range("S49").Value
ActiveSheet.ScrollBar2.Max = Range("S66").Value
ActiveSheet.ScrollBar3.Max = Range("S83").Value
End Sub
Как бы я изменил этот код, чтобы независимо активировать максимальное значение каждой полосы прокрутки на основе изменения в этих ячейках?
Комментарии:
1. Если вы хотите, чтобы макс был скорректирован с изменением ячейки, вы можете использовать событие Worksheet_Change.
If Not (Intersect(Target, Range("S49")) is Nothing Then
позволит вам искать изменения только на S49.2. Я не уверен, что это сработает, так как мне нужно, чтобы каждый максимум полосы прокрутки регулировался на основе значения опорной ячейки. Таким образом, максимальная полоса прокрутки 1 изменяется при изменении ячейки S49, максимальная полоса прокрутки 2 изменяется при изменении ячейки S66, а максимальная полоса прокрутки 3 изменяется при изменении ячейки S83.
3. Вы добавляете 3 оператора if…then внутри события worksheet_change, по одному для каждого (диапазон/ячейка).