2013-03-08 70 views

回答

6
  1. 使用Range对象测试它是否是有效的(优选通用性)
  2. 测试该列是否是有效的(假设你的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 
+0

(1)检查行和列; (2)更具体到'OP',并且只验证列 – whytheq 2013-03-09 11:01:16

1

这里是你的例子。

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 
+0

这是一个很长的路要走这个代码明智 – brettdj 2013-03-08 07:46:23

+0

@ brettdj同意。 – 2013-03-08 08:27:58

相关问题