excel - 看到错误:无法设置列表属性。类型不匹配
问题描述
Could not set the list property. Type mismatch
当我运行以下代码时,我看到了错误。
它可以正常工作,For i = 1 To 10
但如果我将其更改为10 to 100
我会看到错误。
Private Sub CommandButton1_Click()
Dim myString
Sheets("Welcome").Select
Range("W3").Select
myString = Range("W3")
UserForm1.TextBox1.Text = myString
Sheets("Welcome").Select
Range("AA4").Select
myString = Range("AA4")
UserForm1.TextBox2.Text = myString
Dim rng As Range
Dim ws As Worksheet
Dim i As Long
Set ws = Worksheets("August")
Set rng = ws.Range("G2:AK2")
Set fnd = rng.Find(TextBox1)
If fnd Is Nothing Then MsgBox TextBox1 & " not found": Exit Sub
Set first = fnd
With ListBox1
.Clear
For i = 1 To 100
.AddItem Worksheets("August").Range("B" & i + 5).Value
.List(.ListCount - 1, 1) = fnd.Offset(i + 3, 0)
Next i
End With
End Sub
解决方案
我已经使用数据样本的一些随机数测试了下面的代码,它工作得很好。如上所述,在编写代码时要记住一些事情,缩进有很大帮助。其次,我强烈建议始终将Option Explicit
其用作任何代码模块的第一行。这可以防止您使用未声明的变量(即拼写错误)。
Private Sub CommandButton1_Click()
Dim rng As Range
Dim ws As Worksheet
Dim i As Long
Dim fnd As Range <=== Defined as a Range
UserForm1.TextBox1 = Sheets("Welcome").Range("W3")
UserForm1.TextBox2 = Sheets("Welcome").Range("AA4")
Set ws = Worksheets("August")
Set rng = ws.Range("G2:AK2")
Set fnd = rng.Find(TextBox1)
If fnd Is Nothing Then MsgBox TextBox1 & " not found": Exit Sub
With ListBox1
.Clear
For i = 1 To 100
.AddItem Worksheets("August").Range("B" & i + 5).Value
.List(.ListCount - 1, 1) = fnd.Offset(i + 3, 0)
Next i
End With
End Sub
在上面的代码中,请注意我已经缩短了用于设置文本框值的代码。您的原始代码:
Dim myString
Sheets("Welcome").Select
Range("W3").Select
myString = Range("W3")
UserForm1.TextBox1.Text = myString
Sheets("Welcome").Select
Range("AA4").Select
myString = Range("AA4")
UserForm1.TextBox2.Text = myString
变成了
UserForm1.TextBox1 = Sheets("Welcome").Range("W3")
UserForm1.TextBox2 = Sheets("Welcome").Range("AA4")
这干净多了。这在没有.Text
结尾的情况下有效,TextBox1
因为这.Text
是默认属性。另请注意,我直接使用我想要的字符串引用了单元格,而没有“选择”它。选择单元格不是必须使用它,只有用户操作鼠标才需要选择单元格。
推荐阅读
- c# - 当标识符值包含特殊字符时,REST 样式 API 返回 404
- discord - 嵌入系统 [空闲 Python]
- javascript - 未处理的拒绝(TypeError):props.setAlert 不是函数
- tensorflow - 无法通过 tfds 加载 lvis
- java - 无法找到或加载主类 Mac 终端 .java
- python - 是否可以在 dango 视图中将芹菜任务作为参数传递?
- loops - Go Template:向嵌套模板传递更多参数
- python - 如何在 Sympy 中匹配两个表达式的实数值系数
- r - 分位数函数返回两个数字,只需要一个
- java - 如何修复 Employee 程序中的构造函数?