将P列空单元格替换为M列内容的VBA脚本报Runtime Error 424
解决VBA Runtime Error 424(对象要求)问题:替换P列空单元格为对应M列内容
错误原因
原代码里rw.Columns("P")返回的是Range对象,直接用= ""做比较会触发424错误——VBA不允许直接把对象和字符串进行比较,必须明确引用对象的Value属性来获取单元格内容。
修正后的代码
Sub replace_P() Dim rw As Range For Each rw In UsedRange.Rows ' 明确调用Value属性判断单元格是否为空 If rw.Columns("P").Value = "" Then rw.Columns("P").Value = rw.Columns("M").Value End If Next rw End Sub
优化建议(提升效率)
如果工作表数据量较大,遍历整个UsedRange可能会浪费资源。可以限定只遍历有实际数据的行:
Sub replace_P_Optimized() Dim ws As Worksheet Dim lastRow As Long Dim i As Long ' 指定目标工作表,避免依赖ActiveSheet Set ws = ThisWorkbook.Worksheets("Sheet1") ' 以M列最后一个非空行作为遍历终点 lastRow = ws.Cells(ws.Rows.Count, "M").End(xlUp).Row For i = 1 To lastRow If ws.Cells(i, "P").Value = "" Then ws.Cells(i, "P").Value = ws.Cells(i, "M").Value End If Next i End Sub
内容的提问来源于stack exchange,提问作者andren
相关产品推荐
相关产品推荐

