簡體   English   中英

對象_worksheet的方法范圍失敗,命名范圍

[英]method range of object _worksheet failed named range

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的方法范圍失敗,命名范圍”。 錯誤發生在**。 我知道這與命名范圍有關,因為以前,當我寫單元格的范圍即。 “ A1:A215”它起作用。 我檢查了名稱范圍,它看起來正確。 命名范圍的名稱也正確。 我嘗試先激活工作簿,但仍然引發錯誤。

命名的范圍是:

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

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

如果您在“立即”窗口中運行它,是否可以正常工作?

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")*

請使用下面的isNameRngExist函數,當名稱范圍“ DrugCodeInventory”存在時,該函數將返回true,然后可以繼續進行操作。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM