Скажем, пространство, необходимое для элемента управления Tbx , скрытое на уровне 90pt сверху, составляет 30pt. Поэтому все элементы управления под ним должны быть сдвинуты на 30 пт, когда Tbx станет видимым, и высота формы также увеличится на ту же меру. Приведенный ниже код будет выполнять sh, что при одновременном отключении элемента управления.
Dim Ctl As MSForms.Controls
For Each Ctl In Me.Controls
With Ctl
If .Top >= 90 Then
If .Visible = True Then
.Top = Top + 30
Else
.Visible = True
End If
End If
End With
Next Ctl
Me.Top = Top + 30
На практике две вещи будут другими.
- Возможно, вам придется скрыть контроль снова.
- Вы бы создали элемент управления на лету, а не скрывали его.
Если вы планируете снова скрыть элемент управления, вам потребуется массив всех затронутых имен элементов управления. и другой массив (или измерение) для их существующих Top s. Вы бы l oop просмотрели все имена в массиве и сбросили верхнюю часть, как, например,
Me.Controls(Arr(0, i)).Top = Arr(1, i) + Iif(HideMe, 0, 30)
Изучите создание элемента управления на лету. Вы должны иметь возможность просто создать копию существующего элемента управления, от которого он наследует все свойства. Однако любой код события для этого элемента управления должен быть подготовлен заранее.