2013-10-04 152 views
3

我有這個腳本,我正在使用庫存列表。 對於每種產品都有一個計數和一個再訂購限制。如果計數小於再訂購限制,我會發送一封電子郵件詢問訂購更多。VBA - 下標超出範圍

我試着運行腳本,它給了我一個編譯錯誤。 Subscript out of range - Run-time error9

這是我的代碼。

Sub sendEmail() 
' 
' sendEmail Macro 
' 

' 
    Dim olApp As Object, olMail As Object 
    Dim MyData 
    Dim i As Long 

    Set olApp = GetObject(, "Outlook.Application") 


    ' ~~> I have taken 70 rows 
    MyData = ThisWorkbook.Sheets("HDD").Range("D2:E70") 

    For i = LBound(MyData) To UBound(MyData) - 1 
     If MyData(i, 5) > MyData(i, 4) Then 
      Set olMail = olApp.CreateItem(0) 


      Debug.Print MyData(i, 2) 

      With olMail 
       .To = "[email protected]" 
       .Subject = "Sent from Excel" 
       .Body = MyData(i, 2) 
       .Send 
      End With 
     End If 
    Next i 
End Sub 

我的工作是這樣的:

No - Product - Description - Count - Reorder 
--------------------------------------------- 
1 Pen   -   4  5 
+0

當你調試我的價值是什麼?第一遍是零還是'空'? –

+0

+1只是因爲我喜歡那些'~~>'花哨的評論箭頭:) –

+0

@PortlandRunner i = 1; – user2771150

回答

6

你的陣列的源範圍只有兩列,但你是你的數組中引用的4和5中的硬編碼列值。

+0

如果我想發送名稱在身體的否我只是去MyData(我,2)和MyData(我,1)? – user2771150

+0

什麼名字?你的意思是產品名稱? – sam092

+0

是的,目前,我只是發送這個名字......但我想在身體中包含「否」。例如Pen - 1 – user2771150