-1

我正在工作中构建一个 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
4

1 回答 1

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

?

于 2013-09-03T07:32:32.130 回答