使用MS Office 2010的VBA代碼拋出錯誤編號1004
這是我的第一個宏代碼。 它非常像一個Vlookup,不同之處在於在源數組中,沒有完全匹配,而是一個範圍。
Size1 >= CSng(Worksheets("Sheet2").Cells(StartNumber, 2)) And Size1 <= CSng(Worksheets("Sheet2").Cells(StartNumber, 3)))
如果查找值進來的範圍和其他參數也匹配,那就是所需的值。
但是,當我試圖運行這段代碼有錯誤數1004在功能EIL_Code的每一行。
我嘗試了所有的數據轉換成specfic類型如String,單等
複製了完整的數據並刪除其中的所有格式,但是,它仍然不工作。
Sub CommandButton1_Click()
On Error GoTo MyErrorHandler:
' Table1 = Sheet1.Range("A1:S4386")
' Table2 = Sheet2.Range("A1:L1927")
EndNumber = 4386
For StartNumber = 2 To EndNumber
Spec_Item = CStr(Worksheets("Sheet1").Cells(StartNumber, 1))
Size1_LT = CSng(Worksheets("Sheet1").Cells(StartNumber, 2))
Size2_LT = Worksheets("Sheet1").Cells(StartNumber, 3)
Sheet1.Cells(StartNumber, 4) = EIL_Code(Spec_Item, Size1_LT)
Next StartNumber
MyErrorHandler:
If Err.Number = 1004 Then
MsgBox "Employee Not in the table."
ElseIf Err.Number = 13 Then
MsgBox "Employee Not Present in the table."
End If
End Sub
Function EIL_Code(ByVal Spec_Item As String, ByVal Size1 As Single) As String
On Error GoTo MyErrorHandler:
EndNumber1 = 1927
For StartNumber1 = 2 To EndNumber1
If (Spec_Item = CStr(Worksheets("Sheet2").Cells(StartNumber, 1))) And (Size1 >= CSng(Worksheets("Sheet2").Cells(StartNumber, 2)) And Size1 <= CSng(Worksheets("Sheet2").Cells(StartNumber, 3))) Then
EIL_Code = CStr(Worksheets("Sheet2").Cells(StartNumber, 4))
End If
Next StartNumber1
MyErrorHandler:
If Err.Number = 1004 Then
MsgBox "Error Number 1004."
ElseIf Err.Number = 13 Then
MsgBox "Error Number 13."
End If
End Function
有什麼建議?
你在代碼中得到'.Cells(StartNumber,1)',但你的for循環使用'StartNumber1'而不是'StartNumber'。我建議聲明所有變量並使用'Option Explicit'來避免這種情況。請參見[VBA最佳實踐 - 始終使用'Option Explicit'](http://stackoverflow.com/documentation/excel-vba/1107/vba-best-practices)。 –
@Peh:它的工作。謝謝很多指出錯誤。 也感謝您使用「Option Explicit」的建議,從現在開始。 –