2012-12-07 10 views
5

से निपटने नहीं करता मैं Excel के मूल्योंक्यों VBA त्रुटि 2042

समस्या है जब Excel में मैं #N/A है के साथ एक पूरी लाइन के साथ एक चर fila है, VBA Error 2042 की तरह है कि मूल्य लेता है।

मैं उस मान को valorऔर पर एक त्रुटि उत्पन्न नहीं कर सकता। इस बिंदु तक सबकुछ ठीक है, अब मैं For लूप में अगले पुनरावृत्ति पर जाने के लिए On Error Goto को परिभाषित करने का प्रयास कर रहा हूं, लेकिन मुझे नहीं पता कि वीबीए त्रुटि को क्यों संभाल नहीं पाता है।

Do While Not IsEmpty(ActiveCell) 

    txt = ActiveCell.Value2 
    cell = ActiveCell.Offset(0, 1).Value2  
    fila = Range("C20:F20") 

    For j = 1 To UBound(fila, 2) 
     On Error GoTo Siguiente 
     If Not IsEmpty(fila(1, j)) Then    
      valor = fila(1, j) 
      cmd = Cells(1, j + 2).Value2 
      devolver = function1(cmd, txt, cell, valor) 
      arrayDevolver(p) = devolver 
      p = p + 1     
     End If 
Siguiente: 
    Next 
Loop 
+0

आप Value2 क्यों प्रयोग करते हैं के साथ समस्या संभालती है पर लिखने से पहले का उपयोग IsError? (इसके बारे में कभी नहीं सुना) – CustomX

+5

यह अधिक कुशल है कि मूल्य, क्योंकि मूल्य जांचता है कि मान डेटा या मुद्रा प्रकार हैं http://msdn.microsoft.com/en-us/library/office/aa215938%28v=office.11 % 29.aspx –

उत्तर

10

यह एक वीबीए त्रुटि नहीं है - इसलिए त्रुटि प्रबंधन इसे पकड़ नहीं पाएगा। पता लगाने के लिए इस मुद्दे को अपने सरणी

नीचे सरल कोड त्रुटि 2042 इस परीक्षण

Sub Test() 
    Dim varIn As Variant 
    [a1].FormulaR1C1 = "=NA()" 
    If IsError([a1].Value2) Then 
     varIn = "skip record" 
    Else 
     varIn = [a1].Value2 
    End If 
End Sub 
+0

अरे धन्यवाद यह मेरी समस्या का समाधान करता है मुझे पता नहीं था "त्रुटि 2042" यह एक अलग प्रकार की गलती है। –