我在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
有没有人有工作来引用可能有或没有列的组合框?
只需检查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
变量的默认值)
我做了一个粗糙的工作。
Public Function GetStaffName(cb As MSForms.ComboBox) As String
On Error GoTo errhand:
GetStaffName = cb.Column(1)
Exit Function
errhand:
GetStaffName = ""
End Function
就像我说的那样粗暴。我相信一定有更好的方法。如果有人设法找到更好的解决方案,我会认为它是正确的。
你可以使用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