我是否使用了Columns()属性不正确,如果是这样,是否有一个很好的解决方法?

时间:2018-05-29 17:43:02

标签: excel vba excel-vba

我目前正在解决

  

类型不匹配错误

在我写的宏中,我写了一个简短的子程序来深入研究具体问题。该子程序应循环遍历所有A列,输入1-10行中的数字1-10。

Sub looptest()
    Dim rRange As Range
    Dim rCell As Range
    Dim i As Integer

    Set rRange = ThisWorkbook.Worksheets(1).Columns(1)
    i = 0

    For Each rCell In rRange
        If i < 10 Then
            i = i + 1
            rCell.Value2 = i

        End If

    Next rCell

End Sub

相反,这会填充A列中的每个单元格1.在调试模式下单步执行它会显示rCell不是引用单个单元格,而是引用整个列。

我发现如果我更换

Set rRange = ThisWorkbook.Worksheets(1).Columns(1)

Set rRange = ThisWorkbook.Worksheets(1).Range("A1:A100")

宏按预期工作,但我更喜欢能够在我的生产代码中使用Columns()或类似的东西。

我是否使用了Columns()属性不正确,如果是,是否有一个好的解决方法?

1 个答案:

答案 0 :(得分:3)

从这些变化开始:

 Set rRange = ThisWorkbook.Worksheets(1).Columns(1).Cells

 Dim i As Long

使用.Cells让我们遍历列中的单元格而不是工作表中的列。