4

もしも

  • r = 1、 と
  • c = 1

以下の意図したコードは無効です ( Column の 2 列左のセルを返そうとしますA)

Cells(r, c).Offset(0, -2)

で有効かどうかを確認するにはどうすればよいですか?

4

2 に答える 2

6
  1. オブジェクトを使用して、Rangeそれが有効かどうかをテストします (汎用性のために推奨)
  2. OFFSET列が有効かどうかをテストします ( asのハードコードを想定しています)(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
于 2013-03-08T03:00:01.787 に答える
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
于 2013-03-08T05:13:06.077 に答える