【发布时间】:2021-08-04 06:06:33
【问题描述】:
我试图在 VBA 上执行一个代码,每次他在使用的 Range 中遇到一个空白单元格时,都会用“-”填充一个单元格。我有两列里面有公式(公式结果是“#Value”,因为用户让它空白),当我运行代码时,我得到一个运行时错误:
If pl.Range(Split(Cells(1, coluna).Address, "$")(1) & linha).Value = ""
我尝试使用错误处理程序,但它不起作用。它只是忽略标签并不断给我一个运行时错误屏幕。我该怎么办?
我得到的错误:
类型不匹配(错误 13)
感谢您的帮助!
Public Sub PreencheCaracterizacao()
Dim linha As Long
Dim coluna As Long
Set pl = ThisWorkbook.Worksheets("BD - Caracterização")
'Two loops: linha (line) and coluna (column)
For linha = 2 To pl.Cells.Find("*", pl.Cells(1, 1), xlFormulas, xlPart, xlByRows, lPrevious).Row
For coluna = 1 To pl.UsedRange.Columns.Count
On Error GoTo proximo
'Test if the cell is blank
If pl.Range(Split(Cells(1, coluna).Address, "$")(1) & linha).Value = "" Then
'Fill the cell with the string "-"
pl.Range(Split(Cells(1, coluna).Address, "$")(1) & linha).Value = "-"
End If
proximo:
Next coluna
Next linha
End Sub
【问题讨论】:
-
lPrevious应该是xlPrevious吗?将Option Explicit放在你的模块顶部,然后尝试查找其他错误。 -
仅供参考
pl.Range(Split(Cells(1, coluna).Address, "$")(1) & linha).Value写pl.Cells(linha, coluna).Value的路很长 -
这很可能是因为该单元格中存在格式错误?在该行中放置一个断点并检查哪个单元格地址给您错误。然后手动转到该单元格,看看您是否有任何“#”错误例如#NA #DIV 等
-
可能错误处理程序已经被调用过一次,然后它可能会在下一次忽略它。在可能发生错误的代码之后或标签
proximo:之后放置On Error GoTo 0 -
正如@braX 所说,但要使用工具、选项、需要变量声明,因此当变量未声明(或拼写错误)时,VB 将始终发出警告。
标签: excel vba error-handling runtime-error onerror