如果标题没有文本,如何隐藏用户窗体上的选项按钮

How to hide option button on Userform if the caption has no text

我有 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

a) 在 设置字幕之后调用 ifBlank ,而不是之前。

b) 你可以简单地写

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 用户,因此您可能需要调整上面的一些代码。