Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 如何循环,直到两列都有一个空单元格?_Excel_Vba - Fatal编程技术网

Excel 如何循环,直到两列都有一个空单元格?

Excel 如何循环,直到两列都有一个空单元格?,excel,vba,Excel,Vba,下面的代码应该用=TODAY()公式填充AJ列,直到它碰到B列中的一个空单元格 当AJ中有空单元格(与B相比)时工作,但当AJ被填充时,它会保持循环,并在AJ中不必要的行中标记日期(B为空后) 我的想法是建立一个豁免,预先检查AJ和B的最后一行是否都是空的,如果这是真的,那么跳过循环,但无法从地面上得到一些东西 Sub DateStomper() Do Application.ScreenUpdating = False Worksheets("xxx").Select

下面的代码应该用=TODAY()公式填充AJ列,直到它碰到B列中的一个空单元格

当AJ中有空单元格(与B相比)时工作,但当AJ被填充时,它会保持循环,并在AJ中不必要的行中标记日期(B为空后)

我的想法是建立一个豁免,预先检查AJ和B的最后一行是否都是空的,如果这是真的,那么跳过循环,但无法从地面上得到一些东西

Sub DateStomper()

Do
    Application.ScreenUpdating = False
    Worksheets("xxx").Select
    Range("AJ2").End(xlDown).Offset(1, 0).Select
    ActiveCell.FormulaR1C1 = "=TODAY()"
Loop Until Range("AJ2").End(xlDown).Offset(1, 0).Row = Range("B2").End(xlDown).Offset(1, 0).Row

End Sub
试试这个:

Sub DateStomper()
Dim i as Long

Application.ScreenUpdating = False

For i=2 to Range("B2").End(xlDown).Offset(1, 0).Row
    Range("AJ" & i).Formula = "=TODAY()"
Next i

End Sub
只需检查公式是否应用在正确的位置。我不清楚你是否需要在AJ2->AJ
最后一项+1中申请


希望它有助于另一种方法。您可以在不使用循环的情况下输入公式,如果B中没有其他内容,则使用
xldown
是可疑的

Sub x()

Dim r As Long

On Error Resume Next 'in case there are no blanks
r = Range("B2", Range("B" & Rows.Count).End(xlUp)).SpecialCells(xlCellTypeBlanks)(1).Row
On Error GoTo 0

If r > 0 Then
    Range("AJ2:AJ" & r - 1).Formula = "=TODAY()"
Else
    MsgBox "No blanks in B"
End If

End Sub

试着想象你到达了B列上的最后一个单元格。你的代码在检查前添加了
“TODAY()”
,因此当你检查两个单元格是否都为空时,AJ列将具有TODAY值。使用一个。。下一个循环更好。