2014-04-07 96 views
0

我今天玩了一個多小時的代碼,並最終讓它工作。有人可以解釋爲什麼我必須在此代碼運行之前聲明我的shopOrder變量嗎?如果我省略「Dim shopOrder as Long」這一行,那麼什麼類型的變量是shopOrder?在一個範圍內的匹配值

Dim shopOrder As Long 
Dim lastUsedRow As Long 

lastUsedRow = wsjobs.Cells(Rows.Count, "A").End(xlUp).Row 
shopOrder = 15150664 

If Not IsError(Application.Match(shopOrder, Range("E1:E" & lastUsedRow), 0)) Then 
    MsgBox ("This shop order already exists!") 
    Exit Sub 
End If 

非常感謝您的幫助!

謝謝。

+0

'如果我省略「Dim shopOrder as Long」行類型,shopOrder是什麼類型的變量 - 類型是'Variant/Long'。見屏幕:http://i.stack.imgur.com/qCveg.png。代碼應該適用於'Dim shopOrder As Long'這兩種情況,並且當聲明被忽略時(除非你使用'Option Explicit')。問題可能出在'Range(「E1:E」&lastUsedRow)' - 它總是在_active_表中搜索。使用'wsjobs.Range(「E1:E」&lastUsedRow)'爲可靠性 –

+0

總是聲明你的變量:) –

回答

4

如果你看看VBA數據類型,你會看到是4個字節長,覆蓋範圍從-2,147,483,648到2,147,483,647。

可能是你的變量有型INT至極2個字節長,僅覆蓋-32,768到32,767。

您分配給它的值大於32,767。

相關問題