Как скрыть кнопку выбора в пользовательской форме, если в заголовке нет текста

У меня есть 4 кнопки выбора, и их заголовок настроен на разные ячейки. Однако иногда это значение ячейки не содержит текста, и я хочу скрыть кнопку выбора из пользовательской формы, если это так. Но мой код скрывает кнопки выбора, даже если заголовок содержит текст. Я уверен, что это просто, но я не могу это решить.

Call ifBlank

OptionButton1.Caption = qRange1.Value
OptionButton2.Caption = qRange2.Value
OptionButton3.Caption = qRange3.Value
OptionButton4.Caption = qRange4.Value

Sub ifBlank()


If OptionButton3.Caption = "" Then

    OptionButton3.Visible = False

If OptionButton4.Caption = "" Then

    OptionButton4.Visible = False
    
End If
End If
Преобразование HTML-таблицы в профессиональный документ Excel
Преобразование HTML-таблицы в профессиональный документ Excel
Это самый простой способ создания Excel из HTML-таблицы.
Импорт excel в laravel в базу данных
Импорт excel в laravel в базу данных
Здравствуйте, дорогой читатель, в этой статье я расскажу практическим и быстрым способом, как импортировать файл Excel в вашу базу данных с помощью...
1
0
29
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

а) Звоните ifBlankпосле устанавливая титры, не раньше.

б) можно просто написать

Sub ifBlank()
    OptionButton1.Visible = (OptionButton1.Caption <> "")
    OptionButton2.Visible = (OptionButton2.Caption <> "")
    OptionButton3.Visible = (OptionButton3.Caption <> "")
    OptionButton4.Visible = (OptionButton4.Caption <> "")
End If

Вы можете упростить себе задачу, сопоставив кнопки выбора и QRanges в коллекциях. Ваш код будет немного больше при настройке пользовательской формы, но позже код станет проще.

Option Explicit

Private Type State

    Buttons                 As Collection
    QRanges                 As Collection

End Type

Private s                   As State


Private Sub UserForm_Initialize()

    Set s.Buttons = New Collection
    With s.Buttons
    
        .Add OptionButton1
        .Add OptionButton2
        .Add OptionButton3
        .Add OptionButton4
        
    End With
    
    Set s.QRanges = New Collection
    With s.QRanges
    
        .Add QRange1
        .Add QRange2
        .Add QRange3
        .Add QRange4
        
    End With
    
    'other initialisation code
    
End Sub



Public Sub UpdateButtonCaptions()

    Dim myIndex As Long
    For myIndex = 1 To s.Buttons.Count
    
        ' the test for an QRange may need to be more rigourous
        If s.QRanges(myIndex) = "" Then
       
            s.Buttons(myIndex).Visible = False
            
        Else
        
            s.Buttons(myIndex).Visible = True
            s.Buttons(myIndex) = s.QRanges(myIndex).Value
    
        End If
    
    Next
    
End Sub

Я не являюсь постоянным пользователем excel/form, поэтому вам может понадобиться настроить некоторые из приведенных выше кодов.

Другие вопросы по теме