1

整数が設定されているかどうかを検出しようとしています。設定されていない場合は、ループ内のほとんどのコードをスキップします(ifステートメントを使用)。これが私がそうしていることです。

Do While hws.Cells(r, 9).Value <> ""
    On Error Resume Next
    ar = Null
    ar = aws.Range("A:A").Find(hws.Cells(r, 2).Value).Row
    If Not IsNull(ar) Then
  'work with ar'
    End If
    r = r + 1
Loop

しかし、実行するとar = Null問題が発生します。「nullの使用が無効です」と表示されます。

4

3 に答える 3

9

整数として定義された変数は、VBAでNullにすることはできません。あなたはあなたがやりたいことをする別の方法を見つけなければならないでしょう。たとえば、別のデータ型を使用するか、マジックナンバーを使用してnullを示します(たとえば-1)。

サンプルコードでは、arにLong値(Range.RowはLong)が割り当てられるか、エラーがスローされます。

于 2010-10-26T12:17:14.727 に答える
1

バリアントを使用して空にするだけです。

Dim i

If IsEmpty(i) Then MsgBox "IsEmpty"
i = 10

If IsEmpty(i) Then
   MsgBox "IsEmpty"
Else
   MsgBox "not Empty"
End If
i = Empty
If IsEmpty(i) Then MsgBox "IsEmpty"
'a kind of Nullable behaviour you only can get with a variant
'do you have integer?
Dim j as Integer
j = 0
If j = 0 Then MsgBox "j is 0"
于 2010-10-26T12:05:19.393 に答える
0

検索は範囲を返します:

Dim rf As Range
With aws.Range("A:A")
    Set rf = .Find(hws.Cells(r, 2).Value)
    If Not rf Is Nothing Then
        Debug.Print "Found : " & rf.Address
    End If
End With

-http://msdn.microsoft.com/en-us/library/aa195730 ( office.11​​).aspx

于 2010-10-26T12:33:51.410 に答える