我在excel用户表单中有一个ComboBox,其中有两个列,第一个是隐藏的,包含员工员工编号,第二列包含员工姓名。
我从用户表单生成一封电子邮件,其中包含员工姓名
Me.cbName.Column(1)
完美无缺,但这是一个可选字段,因此当没有选择职员时,它会返回错误,因为Column(1)
不存在。
我尝试创建以下函数来获取值并将其作为字符串返回,但它返回相同的错误。
Public Function GetStaffName(cb As MSForms.ComboBox) As String
If IsError(cb.Column(1)) = True Then
GetStaffName = cb.Value
Else
GetStaffName = cb.Column(1)
End If
End Function
有没有人可以参考一个可能有也可能没有列的组合框?
答案 0 :(得分:0)
我做了一个粗糙的工作。
Public Function GetStaffName(cb As MSForms.ComboBox) As String
On Error GoTo errhand:
GetStaffName = cb.Column(1)
Exit Function
errhand:
GetStaffName = ""
End Function
像我说的那样粗暴。我相信一定有更好的方法。如果有人设法找到更好的解决方案,我会认为它是正确的。
答案 1 :(得分:0)
你可以使用column count属性是某种方式的cb吗?
对不起,我不能测试但是类似的东西?
Public Function GetStaffName(cb As MSForms.ComboBox) As String
If not cb.ColumnCount = 2 then
GetStaffName = cb.Value
Else
GetStaffName = cb.Column(1)
End If
End Function
答案 2 :(得分:0)
只需检查Combobox ListIndex
属性对`-1○6,看看是否有任何选择:
Public Function GetStaffName(cb As MSForms.ComboBox) As String
If cb.ListIndex <> -1 Then GetStaffName = cb.Column(1)
End Function
如果没有选择则不执行任何操作,因此该函数将返回一个空字符串(这是String
变量的默认值)