Excel VBA使用工作表中的数据填充列表框,仅使用与变量匹配的行

时间:2013-09-03 02:44:27

标签: excel vba listbox

我正在建立一个Excel程序,以便同事可以查看他们的加售。我坚持的是列表框的人口。 当我填充列表框时,它返回所有行。我需要它返回的是E列中的名称与公共变量中包含的名称匹配的所有行。 我搜索了所有尝试找到解决方案,但没有运气。 任何帮助将不胜感激,因为现在开始让我感到烦恼。

Public Sub UserForm_Initialize() 
   var_associate = "Kirsty" 
   Dim var_nextline As Integer 
   var_nextline = 1 
   x = "a" 
   Do While x <> "" 
      x = Cells(var_nextline, 2) 
      If x <> var_associate Then 
          var_nextline = var_nextline + 1 
      Else 
          Me.lsb_upsell.AddItem(var_nextline, 2).Value 
          var_nextline = var_nextline + 1 
      End If 
   Loop 
End Sub

1 个答案:

答案 0 :(得分:0)

x = Cells(var_nextline, 2)

应该给出错误,因为右侧返回单元格对象,而不是单元格中包含的值,并且必须使用Set来完成对象的分配。无论如何,这不是你想要的。尝试

x = Cells(var_nextline, 2).Value2

备注:您可以改进代码:

Public Sub UserForm_Initialize()

   Dim var_associate As String
   var_associate = "Kirsty" 

   Dim var_nextline As Integer
   var_nextline = 1

   Dim x As String
   Do
      x = Cells(var_nextline, 2).Value2
      If x = "" Then Exit Loop
      If x = var_associate Then
         Me.lsb_upsell.AddItem(x).Value
      End If
      var_nextline = var_nextline + 1
   Loop

End Sub

第二句话:Cells在哪里初始化(例如Set Cells = ActiveSheet.Cells)?在文件顶部添加Option Explicit,以获取未声明变量的错误消息。你的意思是

ActiveSheet.Cells(var_nextline, 2).Value