Авторазмер / Настройка пользовательской формы - PullRequest
1 голос
/ 24 января 2020

Я новичок в программировании VBA, у меня есть Userform с TextBoxes, Labels и Checkboxes.

Моя проблема заключается в том, как настроить автоматический размер или настроить форму, потому что я скрыл Textbox и Label. Теперь, если я нажму Button, он покажет Texbox и Label и Также он автоматически изменит размер Form и другие элементы управления.

Я не знаю, как это начать.

Фактический результат

enter image description here

Давайте предположим, что это скрыто Label и Texbox между Team Name и Last Name Теперь я нажимаю на обновление RadioButton, оно покажет скрытые Label и Texbox и отрегулирует форму и другие элементы управления.

Ожидается Результат

enter image description here

Есть ли способ сделать это?

1 Ответ

2 голосов
/ 24 января 2020

Скажем, пространство, необходимое для элемента управления 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

На практике две вещи будут другими.

  1. Возможно, вам придется скрыть контроль снова.
  2. Вы бы создали элемент управления на лету, а не скрывали его.

Если вы планируете снова скрыть элемент управления, вам потребуется массив всех затронутых имен элементов управления. и другой массив (или измерение) для их существующих Top s. Вы бы l oop просмотрели все имена в массиве и сбросили верхнюю часть, как, например,

Me.Controls(Arr(0, i)).Top = Arr(1, i) + Iif(HideMe, 0, 30)

Изучите создание элемента управления на лету. Вы должны иметь возможность просто создать копию существующего элемента управления, от которого он наследует все свойства. Однако любой код события для этого элемента управления должен быть подготовлен заранее.

...