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

问题描述 投票:0回答:3

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

有没有人有工作来引用可能有或没有列的组合框?

excel vba excel-vba
3个回答
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变量的默认值)


0
投票

我做了一个粗糙的工作。

Public Function GetStaffName(cb As MSForms.ComboBox) As String
  On Error GoTo errhand:
  GetStaffName = cb.Column(1)
  Exit Function

errhand:
  GetStaffName = ""
End Function

就像我说的那样粗暴。我相信一定有更好的方法。如果有人设法找到更好的解决方案,我会认为它是正确的。


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
© www.soinside.com 2019 - 2024. All rights reserved.