【问题标题】:Start counter loop in specific cell and end in specific cell在特定单元格中开始计数器循环并在特定单元格中结束
【发布时间】:2018-05-16 10:59:46
【问题描述】:

我正在尝试创建一个从 Range(A9) 开始并在 Range(A38) max 结束的循环计数器。 “A9”上方和“A38”下方的单元格有文本并且是锁定的单元格。我在此站点上找到了一些代码并尝试对其进行修改以满足我的需要,但我得到了一个(“运行时错误'91':对象变量或未设置块变量”)。不确定这到底是什么意思。下面是我的代码。

Private Sub cmdsGO_Click()
Dim myWrkBk As Workbook
Dim mySheet As Worksheet
Dim startCell As Range
Dim lastRow As Range
Dim i As Long

Set myWrkBk = ActiveWorkbook
Set mySheet = myWrkBk.Sheets("Sheet1")
Set startCell = Range("'Sheet1'! A9")

lastRow = Range("'Sheet1'!A38") 

While i <= lastRow
   i = i + 1
Wend    
End Sub

我正在使用命令按钮来启动循环。 Range("A9") 到 Range("A38") 是 30 个数字。所以,当然,计数器应该从 1 开始,到 30 结束,但事实并非如此。谢谢。

我找到这段代码的原始位置是: Loop to start at a cell and delete the next 600 in the column

【问题讨论】:

    标签: excel vba


    【解决方案1】:

    尝试数据系列。

    Option Explicit
    
    Private Sub cmdsGO_Click()
        Dim myWrkBk As Workbook
        Dim mySheet As Worksheet
    
        Set myWrkBk = ActiveWorkbook
        Set mySheet = myWrkBk.Sheets("Sheet1")
        With mySheet
            .Cells(9, "A") = 1
            .Range(.Cells(9, "A"), .Cells(38, "A")).DataSeries Rowcol:=xlColumns, Type:=xlLinear, Step:=1
        End With
    End Sub
    

    您自己的代码无法正常工作,因为范围对象(例如 lastRow)首先从 Range("'Sheet1'!A38") 中分配了一个值,而不是设置为范围对象,然后在对于下一个循环。

    【讨论】:

    • 介意解释一下代码在“With 和 End With”之间的作用。我认为,我理解第一部分,您将 1 分配给单元格 9A。正确的?我问的原因,最终我可能会建立这个公式。示例:如果 A 列中有一个数值,可以说单元格 (A9),那么单元格 (E9)、(F9) 和 (G9) 中可能有值。非常感谢您的帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-17
    • 2011-09-08
    • 1970-01-01
    相关资源
    最近更新 更多