Excel VBA запускает несколько событий независимо друг от друга с помощью динамических полос прокрутки

#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, по одному для каждого (диапазон/ячейка).