Excel 使用For循环时发生VBA运行时错误1004
我正在为Excel构建一个用户表单,并在此过程中对VBA进行速成培训。我已经解决了几乎所有的问题,但现在我被困在这个问题上,现有的StackOverflow答案都没有帮助我: 我有一个工作表(Sheet8),它充当表单保存和提取数据的数据库,我有一个列表框(lstinomeview),应该用一些列中的值填充。例如:Excel 使用For循环时发生VBA运行时错误1004,excel,vba,Excel,Vba,我正在为Excel构建一个用户表单,并在此过程中对VBA进行速成培训。我已经解决了几乎所有的问题,但现在我被困在这个问题上,现有的StackOverflow答案都没有帮助我: 我有一个工作表(Sheet8),它充当表单保存和提取数据的数据库,我有一个列表框(lstinomeview),应该用一些列中的值填充。例如: Row 1: Category1 | Category 2 | Etc. Row 2: Value 1 | Value 2 | Etc. Row 3: Value 3 | Value
Row 1: Category1 | Category 2 | Etc.
Row 2: Value 1 | Value 2 | Etc.
Row 3: Value 3 | Value 4 | Etc.
其中列表框输出:
Category 1 | Value 1
Category 2 | Value 2
Category Etc | Value Etc
以及UserForm_Initialize()下的现有代码
iRow是一个公共变量,它在别处被修改以更改当前选择的行。iCntI和iCntE也是公共变量,可以在其他地方为不同的函数进行操作
在GetValues下,我有以下代码,这是错误1004抛出的地方:
Private Sub GetValues(iRef As Integer)
...
Dim iEntryI As Range
For Each iEntryI In Range(Sheet8.Cells(iRef, 14), Sheet8.Cells(iRef, 18))
If iEntryI > 0 Then
Me.lstIncomeView.AddItem
Me.lstIncomeView.List(iCntI, 0) = Sheet8.Cells(0, iEntryI.Column)
Me.lstIncomeView.List(iCntI, 1) = iEntryI.Value
iCntI = iCntI + 1
Else: End If
Next iEntryI
Sheet8.Cells(0,iEntryI.Column)
-没有行0
。这是一个简单的修复方法。谢谢Sheet8.Cells(0,iEntryI.Column)
-没有行0
。这很容易修复。谢谢
Private Sub GetValues(iRef As Integer)
...
Dim iEntryI As Range
For Each iEntryI In Range(Sheet8.Cells(iRef, 14), Sheet8.Cells(iRef, 18))
If iEntryI > 0 Then
Me.lstIncomeView.AddItem
Me.lstIncomeView.List(iCntI, 0) = Sheet8.Cells(0, iEntryI.Column)
Me.lstIncomeView.List(iCntI, 1) = iEntryI.Value
iCntI = iCntI + 1
Else: End If
Next iEntryI