Excel 2016. У меня файл с кучей листов. Делаю удобный переход между ними (да, я знаю что можно нажать ПКМ в левом нижнем углу самого Excel, где стрелки перехода между листами, но туда надо тянуться мышкой, что не очень удобно на большом мониторе).
Список листов вызывается сочетанием CTRL + ALT + W Переход на нужный лист — двойной щелчок на нужном листе или кнопкой.
Вопрос. Можно ли сделать, чтобы размер Listbox'a (и размер самой формы) автоматически менялся в зависимости от числа элементов в ней?
Private Sub UserForm_Initialize()
Me.ListBox1.Height = 5 ' установка видимости меньше одной строки
' по умолчанию ListBox1.IntegralHeight = True
End Sub
Код
Private Sub UserForm_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
Podgonka_dobavkoy_po_odnomu
End Sub
Код
Sub Podgonka_dobavkoy_po_odnomu()
Static currentVisibleCount As Byte 'помнит кол-во видимых строк
Dim maxScreenVisibleCount As Byte
maxScreenVisibleCount = 60 'чтоб за экран не вылезало
With Me.ListBox1
If .Height < 6 Then currentVisibleCount = 0 'начальные условия
If currentVisibleCount >= maxScreenVisibleCount Then Exit Sub
If currentVisibleCount < .ListCount _
Then currentVisibleCount = currentVisibleCount + 1 Else Exit Sub
.IntegralHeight = False 'отключаем подгонку, чтоб при включении произошло событие
.Height = .Height + 15 '15 зависит от размера шрифта, но держит широкий диапазон
.IntegralHeight = True 'включаем, но подгонка произойдет после окончания процедуры
Me.Height = .Height + 100
Me.CommandButton1.Top = .Height + 10
Me.CommandButton2.Top = .Height + 10
End With
End Sub
Вот такой костыль Можно еще ListBox1_MouseMove использовать, конечно...