为每一行循环 Excel 代码,直到找到空白单元格

问题描述

我有以下代码需要循环约 100 行。不是为每一行写出来,有没有办法在这里添加一个循环功能来重复直到一行是空白的?我在弄清楚 do while 循环功能并将其合并到下面的代码中时遇到了麻烦。谢谢!

 Sub Excel_INDIRECT_Function()

 'declare a variable
    Dim ws As Worksheet

 Set ws = Worksheets("TOC")

    'apply the Excel INDIRECT function

ws.Range("$F8").Formula = "=INDIRECT($W8&""Q24"")"
ws.Range("$G8").Formula = "=INDIRECT($W8&""Q30"")"
ws.Range("$I8").Formula = "=INDIRECT($W8&""I56"")"
ws.Range("$J8").Formula = "=INDIRECT($W8&""Q34"")"
ws.Range("$K8").Formula = "=INDIRECT($W8&""D7"")"
ws.Range("$L8").Formula = "=INDIRECT($W8&""L56"")"
ws.Range("$M8").Formula = "=INDIRECT($W8&""M56"")"
ws.Range("$N8").Formula = "=INDIRECT($W8&""N56"")"
ws.Range("$O8").Formula = "=INDIRECT($W8&""O56"")"
ws.Range("$R8").Formula = "=INDIRECT($W8&""D6"")"

End Sub

我希望在不编写此代码约 100 次的情况下为多行完成此操作。非常感谢。

解决方法

我不确定您是否需要循环。

此代码会将公式从第 8 行到第 W 列数据的最后一行放在 F、G 等列中。

Sub Excel_INDIRECT_Function()
'declare a variable
Dim ws As Worksheet
Dim lngLastRow As Long

    Set ws = Worksheets("TOC")
    
    lngLastRow = ws.Range("W" & Rows.Count).End(xlUp).Row
    'apply the Excel INDIRECT function

    ws.Range("F8:F" & lngLastRow).Formula = "=INDIRECT($W8&""Q24"")"
    ws.Range("G8:G" & lngLastRow).Formula = "=INDIRECT($W8&""Q30"")"
    ws.Range("I8:I" & lngLastRow).Formula = "=INDIRECT($W8&""I56"")"
    ws.Range("J8:J" & lngLastRow).Formula = "=INDIRECT($W8&""Q34"")"
    ws.Range("K8:K" & lngLastRow).Formula = "=INDIRECT($W8&""D7"")"
    ws.Range("L8:L" & lngLastRow).Formula = "=INDIRECT($W8&""L56"")"
    ws.Range("M8:M" & lngLastRow).Formula = "=INDIRECT($W8&""M56"")"
    ws.Range("N8:N" & lngLastRow).Formula = "=INDIRECT($W8&""N56"")"
    ws.Range("O8:O" & lngLastRow).Formula = "=INDIRECT($W8&""O56"")"
    ws.Range("R8:R" & lngLastRow).Formula = "=INDIRECT($W8&""D6"")"

End Sub