excel - 检查对单元格的引用是否有效

标签 excel vba

我正在导入一个 csv 文件,其中包含对工作表的单元格引用。单元格引用可能是错误的,因为用户曾经在键入单元格引用时出错(例如:用户写了“AMQ”而不是“AM1”),或者出现了其他错误。

问题是,我有超过 1000 个可以动态更改的单元格引用,并且可能会出现任何可以想象的错误,因为用户可以在其中写入任何内容。

我正在尝试编写一个函数来检查引用是否有效,但我找不到检查单元格引用是否存在于 Excel 中的解决方案。

例如,我有这段代码,但它总是返回运行时错误,因为如果 rng 不是有效输入,则 Range(rng).Row 函数不起作用。但我该如何解决这个问题呢?

正如预期的那样,这总是有效的:

Sub Test()
    rng = "A1"
    flag = rangeExists(rng)
    debug.print flag
End Sub

这不起作用:

Sub Test()
    rng = "AQ"
    flag = rangeExists(rng)
    debug.print flag
End Sub

功能:

Function rangeExists(ByVal rng As String) As Boolean
    
    Dim row_int As Integer
    
    row_int = Range(rng).Row
    On Error Resume Next
    
    If Err.Number <> 0 Then
        rangeExists = False
    Else
        rangeExists = True
    End If

    On Error GoTo -1

End Function

我正在尝试使用 VBA 中的错误处理找到解决方案,但我无法这样做。您知道如何解决这个问题吗?

最佳答案

如果是有效范围,则返回 True,否则返回 False。

Function IsRangeValid(ByVal rng As String) As Boolean
    Dim r As Range
    On Error Resume Next
    Set r = ActiveSheet.Range(rng)
    On Error Goto 0
    IsRangeValid = (Not r Is Nothing) ' parenthesis optional
End Function

关于excel - 检查对单元格的引用是否有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70104768/

相关文章:

excel - VBA 全局变量

java - 解码 Excel 生成的剪贴板的 XML 电子表格内容

excel - 使用 Excel 将信息提交到网站表单并解析结果

VBA 使用 for...next 计算 1*2*3...*n

VBA - 复制区域和粘贴区域的大小不同错误?

vba - 将单元格复制并粘贴到 VBA 循环下方的行中

string - VBA 字符串是不可变的吗?

ms-access - WScript.Shell 运行时错误 - IwshShell3 失败

c# - 如何使用 C# 在 Excel 中查找并替换单词/短语

vba - 在 Excel 中对用户隐藏宏但仍通过按钮调用?