如果标题没有文本,如何隐藏用户窗体上的选项按钮
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 用户,因此您可能需要调整上面的一些代码。
我有 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 用户,因此您可能需要调整上面的一些代码。