如何检查单元在VBA中是否有效?
如果
-
r = 1
,和 -
c = 1
下面的代码是无效的(它试图返回列A
左边的两列)
Cells(r, c).Offset(0, -2)
如何检查目标单元格是否有效或不在vba中 ?
- 使用一个
Range
对象来testing它是否有效(首选的多function性) - testing列是否有效(假设你的
OFFSET
硬编码为(0,2)
(1)代码
Sub Test1() Dim r As Long Dim c As Long r = 1 c = 1 Dim rng1 As Range On Error Resume Next Set rng1 = Cells(r, c).Offset(0, -2) On Error GoTo 0 If Not rng1 Is Nothing Then 'proceed with your code - range exists Else MsgBox "Range Error", vbCritical End If End Sub
(2)代码
Sub Test2() Dim rng1 As Range Dim r As Long Dim c As Long c = 3 r = 1 If c - 2 <= 0 Then MsgBox "Error", vbCritical Else Set rng1 = Cells(r, c).Offset(0, -2) End If End Sub
这里是你的例子。
Sub sample() Dim r As Integer Dim c As Integer r = 1 c = 1 Dim validRng As Boolean validRng = isValidRng(r, c, 0, -2) Debug.Print validRng validRng = isValidRng(r, c + 5, 0, 2) Debug.Print validRng validRng = isValidRng(r, c, -1, 0) Debug.Print validRng validRng = isValidRng(r, c + 2, 0, -1) Debug.Print validRng End Sub Function isValidRng(row As Integer, col As Integer, offsetrow As Integer, offsetcol As Integer) As Boolean 'Returns if its valid range If ((row + offsetrow) > 0) And ((col + offsetcol) > 0) Then isValidRng = True Else isValidRng = False End If End Function