سؤال

أحاول اكتشاف ما إذا كان قد تم تعيين عدد صحيح ، وإذا لم يكن الأمر كذلك ، تخطي معظم الكود في الحلقة (باستخدام عبارة 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 لديه مشاكل. تقول "الاستخدام غير الصالح من فارغ".

هل كانت مفيدة؟

المحلول

العثور على إرجاع مجموعة:

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

نصائح أخرى

لا يمكن أن تكون المتغيرات المحددة بأنها عدد صحيح فارغة في VBA. سيكون عليك أن تجد طريقة أخرى لفعل ما تريد. على سبيل المثال ، استخدم نوع بيانات مختلف أو استخدم رقمًا سحريًا للإشارة إلى NULL (على سبيل المثال -1).

في رمز المثال الخاص بك ، سيتم تعيين إما AR قيمة طويلة (Range.row طويلة) أو سوف يرمي خطأ.

ما عليك سوى استخدام البديل و isempty:

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"
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top