我正在建立一个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
答案 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