Col*_*Nye 10 excel vba range offset
我在excel ss中有一个动态定义的命名范围,它根据开始日期和结束日期从表中获取数据
=OFFSET(Time!$A$1,IFERROR(MATCH(Date_Range_Start,AllDates,0)-1,MATCH(Date_Range_Start,AllDates)),1,MATCH(Date_Range_End,AllDates)-IFERROR(MATCH(Date_Range_Start,AllDates,0)-1,MATCH(Date_Range_Start,AllDates)),4)
Run Code Online (Sandbox Code Playgroud)
但是如果日期范围在表中没有数据,则范围不存在(或者某些东西,idk).如何在VBA中编写代码以测试此范围是否存在?
我尝试过类似的东西
If Not Range("DateRangeData") Is Nothing Then
Run Code Online (Sandbox Code Playgroud)
但我得到"运行时错误1004,对象'_Global'的方法'范围'失败了."
Ste*_*ric 25
这是一个函数我敲了回来是否存在命名范围.它可能会帮助你.
Function RangeExists(R As String) As Boolean
Dim Test As Range
On Error Resume Next
Set Test = ActiveSheet.Range(R)
RangeExists = Err.Number = 0
End Function
Run Code Online (Sandbox Code Playgroud)
nut*_*sch 16
您可以在使用范围之前复制VBA中的匹配进行计数,也可以使用错误处理:
On Error Resume Next
Debug.Print range("DateRangeData").Rows.Count
If Err = 1004 Then
MsgBox "Range Empty"
Exit Sub
Else
MsgBox "Range full"
End If
Err.Clear
On Error GoTo 0
Run Code Online (Sandbox Code Playgroud)