2013-03-23 117 views
1
Private Sub Submit_Click() 
Application.ScreenUpdating = False 

Dim rangeForCode As range, rngLookupRange As range 

Dim row As Integer, stock As Integer 
Dim result As Integer 
Dim drugCodePC As Integer 
Dim qty As Integer 
Dim ws As Worksheet 

drugCodePC = CInt(DrugCode2.Value) 
qty = CInt(Quantity.Value) 

'Populating the drug name 
Set ws = Worksheets("Drug Record") 
ws.Select 

*Set rangeForCode = ws.range("DrugCodeInventory")* 
row = Application.WorksheetFunction.Match(drugCodePC, rangeForCode, 1) 
Set rngLookupRange = ws.range("Inventory") 
stock = Application.WorksheetFunction.VLookup(drugCodePC, rngLookupRange, 3, False) 
result = stock + qty 
'MsgBox (row) 
ws.Cells(row + 1, 3).Value = result 

Application.ScreenUpdating = True 
Unload PurchaseForm 
End Sub 

這會一直拋出錯誤「對象_worksheet失敗的命名範圍的方法範圍」。 錯誤發生在**處。我知道這與命名的ranged有關,因爲之前,當我編寫單元格的範圍即。 「A1:A215」起作用。我檢查了名稱範圍,它看起來是正確的。命名範圍的名稱也是正確的。我試圖首先激活工作簿,但錯誤仍在拋出。
對象_worksheet的方法範圍失敗,命名範圍爲

命名的範圍是:

= OFFSET(DrugCodeInventory!$A$2, 0, 0, COUNTA(DrugCodeInventory!$A:$A)-1,1) 

我只想動態地選擇在我的工作表中的第一列。

+0

嘗試使用不同的名稱作爲您的範圍(即與表格名稱不同) – 2013-03-23 04:15:18

+0

對不起,我有點困惑。你是說範圍'DrugCodeInventory'是指'= OFFSET(DrugCodeInventory!$ A $ 2,0,0,COUNTA(DrugCodeInventory!$ A:$ A)-1,1)'? – 2013-03-23 05:22:57

+0

沒有答案幫助嗎? (如果他們確實把他們+1) - 如果要麼意味着你的問題得到解決,那麼將其標記爲解決方案。 – whytheq 2013-04-01 18:10:28

回答

0

如果你在立即窗口中運行它,它是否工作?

application.Goto Worksheets("Drug Record").range("DrugCodeInventory") 

如果不運行,則嘗試刪除命名範圍並創建一個新範圍。

也請儘量明確符合條件的代碼的這一部分:

Dim ws As Excel.Worksheet '<added full qualification here 

drugCodePC = CInt(DrugCode2.Value) 
qty = CInt(Quantity.Value) 

'Populating the drug name 
Set ws = Excel.thisworkbook.Worksheets("Drug Record") '<added full qualification here 
ws.Select 

*Set rangeForCode = ws.range("DrugCodeInventory")* 
0

請使用以下isNameRngExist函數將返回時的名稱範圍「DrugCodeInventory」存在真實,那麼你就可以入手進一步操縱。

Function isNameRngExist(myRng As String) As Boolean 
    On Error Resume Next 
    isNameRngExist = Len(ThisWorkbook.Names(TheName).Name) <> 0 
End Function