Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 对象_工作表的方法范围命名范围失败_Vba_Excel - Fatal编程技术网

Vba 对象_工作表的方法范围命名范围失败

Vba 对象_工作表的方法范围命名范围失败,vba,excel,Vba,Excel,这将继续抛出对象的错误方法范围\u工作表失败的命名范围。 错误发生在**。我知道它与命名的范围有关,因为之前,当我写单元格范围时,即A1:A215,它是有效的。我检查了名字范围,它看起来不错。指定范围的名称也是正确的。我已尝试先激活工作簿,但仍引发错误 命名范围为: Private Sub Submit_Click() Application.ScreenUpdating = False Dim rangeForCode As range, rngLookupRange As range D

这将继续抛出对象的错误方法范围\u工作表失败的命名范围。 错误发生在**。我知道它与命名的范围有关,因为之前,当我写单元格范围时,即A1:A215,它是有效的。我检查了名字范围,它看起来不错。指定范围的名称也是正确的。我已尝试先激活工作簿,但仍引发错误

命名范围为:

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

我只想动态地选择工作表中的第一列。

如果在即时窗口中运行此操作,是否有效

= OFFSET(DrugCodeInventory!$A$2, 0, 0, COUNTA(DrugCodeInventory!$A:$A)-1,1)
如果未运行,请尝试删除命名区域并创建一个新区域

请尝试明确限定代码的这一部分:

application.Goto Worksheets("Drug Record").range("DrugCodeInventory")
请使用下面的isNameRngExist函数,当名称范围DrugCodeInventory存在时,该函数将返回true,然后您可以继续进行进一步的操作

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

请尝试为您的产品系列使用不同的名称,例如,与床单名称不同抱歉,我有点困惑。你是说范围DrugCodeInventory是指=OFFSETDrugCodeInventory$一个$2,0,0,COUNTADrugCodeInventory$A:$A-1,1?这两个答案都有用吗?如果他们这样做了,那么他们+1-如果其中一个意味着你的问题得到了解决,那么将其标记为解决方案。
Function isNameRngExist(myRng As String) As Boolean
    On Error Resume Next
    isNameRngExist = Len(ThisWorkbook.Names(TheName).Name) <> 0
End Function