2013-03-23 2 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 failed named range». Ошибка возникает в **. Я знаю, что это имеет какое-то отношение к названному диапазону, потому что раньше, когда я писал диапазон ячеек, т.е. «A1: A215» работает. Я проверил диапазон имен, и он выглядит правильно. Также указано имя именованного диапазона. Сначала я попытался активировать рабочую книгу, но ошибка все равно была сброшена.
метод диапазон объекта _workheet сбой с именованным диапазоном

Названный варьировались является:

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

Я только хочу, чтобы выбрать первый столбец в моем листе динамически.

+0

Попробуйте использовать другое название для своего диапазона (то есть, не то же имя, что и на листе) –

+0

Извините, я немного растерялся. Вы говорите, что диапазон «DrugCodeInventory» относится к '= OFFSET (DrugCodeInventory! $ A $ 2, 0, 0, COUNTA (DrugCodeInventory! $ A: $ A) -1,1)'? –

+0

Помог ли любой из ответов? (если они сделали то вверх по ним +1) - если бы это означало, что ваша проблема была исправлена, то отметьте ее как решение. – whytheq

ответ

0

Если вы запустите это в окне Immediate, это сработает?

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 
Смежные вопросы