Excel VBA - 引用可能不存在的ComboBox中的列

时间:2018-03-02 02:07:42

标签: excel vba excel-vba

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

有没有人可以参考一个可能有也可能没有列的组合框?

3 个答案:

答案 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变量的默认值)