我正在寻找设置一个 VBA 宏,它会自动遍历列中的数据列表并挑选出缺失的值。我现在得到的代码(见下文)有效,但我相信它开始在单元格 A2 中查找。我希望它从 B1 开始。
我怎么能做出这种改变?
抱歉,我是 VBA 的初学者!
Sub Check_Sequential()
Dim LR As Long, i As Long
LR = ActiveSheet.Range("A" & Rows.Count).End(xlUp).Row
ALR = ActiveSheet.Range("C" & Rows.Count).End(xlUp).Row + 1
x = 2
Cells(1, 3) = "Missing Numbers"
For i = 2 To LR
0
If Cells(i, 1) <> x Then
Cells(ALR, 3) = x
ALR = ActiveSheet.Range("C" & Rows.Count).End(xlUp).Row + 1
x = x + 1
Else
x = x + 1
End If
If Cells(i, 1) > x Then GoTo 0
If Cells(i, 1) = x Then
x = x + 1
End If
Next i
MsgBox "Done"
End Sub
为了将搜索开始范围的单元格 A2 移动到 B1,您需要对代码进行以下更改。这只是解决您定义初始搜索的区域:
Sub Check_Sequential()
Dim LR As Long, i As Long
LR = ActiveSheet.Range("B" & Rows.Count).End(xlUp).Row '// Changed from "A" to "B"
ALR = ActiveSheet.Range("C" & Rows.Count).End(xlUp).Row + 1
x = 2
Cells(1, 3) = "Missing Numbers"
For i = 1 To LR '// Chaged i to one to start at row 1 instead of 2
0
If Cells(i, 2) <> x Then '// Changed from i,1 to i,2
Cells(ALR, 3) = x
ALR = ActiveSheet.Range("C" & Rows.Count).End(xlUp).Row + 1
x = x + 1
Else
x = x + 1
End If
If Cells(i, 2) > x Then GoTo 0 '// Changed from i,1 to i,2
If Cells(i, 2) = x Then '// Changed from i,1 to i,2
x = x + 1
End If
Next i
MsgBox "Done"
End Sub
这应该允许您的代码工作,尽管正如其他一些人指出的那样,您可以研究一些事情来进一步发展您的 VBA 技能:
ALR
)On Error GoTo 0
”是您恢复默认错误处理的方式,这可能会产生误导.value
" 属性编辑单元格值更清晰,在这种情况下它的工作方式完全相同虽然这不是一段糟糕的代码,但特别考虑你将自己归类为初学者。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句