2016-08-16 5 views
0

그래서 다른 통합 문서에서 문자열 PartNumber가 들어있는 셀을 찾으려고합니다. 이 작업을 아직 할 수있는 방법을 찾지 못했습니다. 내가 뭘 놓치고 있니?다른 통합 문서의 셀 선택

Private Sub SearchInventory_Click() 

Dim PartNumber as String 
Dim PartRange As Range 

PartNumber = Application.InputBox("Enter the Part Number") 

Application.ScreenUpdating = False 
Activewindow.WindowState = xlMinimized 
Workbooks.Open ("C:\Users\Dan\Desktop\Assembly Sheet\Inventory.xlsx") 
Activewindow.WindowState = xlMaximized 
Workbooks("Inventory.xlsx").Activate 
Set PartRange = Workbooks("Inventory.xlsx").Worksheets("Inventory").Range("A:A").Find(PartNumber, , xlValues, xlWhole).Select 
Application.ScreenUpdating = True 

End Sub 
+1

어떤 오류가 있습니까? 무엇이 작동하지 않습니까? – litelite

+0

런타임 오류 '424' 개체 필요 –

+0

어떤 행이 발생합니까? – litelite

답변

0

당신은 그것을 객체가 (set 포함) 인 것처럼 select 부울을 반환하기 때문에 (객체하지 않은) VBA에서 불법 인 Select의 값을 위해 노력하고 있습니다. 발생할 수있는 또 다른 문제는 부품이 발견되지 않으면 nothing에 호출되어 select이 호출된다는 것입니다. 다음과 같이 두 단계로 수행해야합니다.

Private Sub SearchInventory_Click() 

Dim PartNumber as String 
Dim PartRange As Range 

PartNumber = Application.InputBox("Enter the Part Number") 

Application.ScreenUpdating = False 
Activewindow.WindowState = xlMinimized 
Workbooks.Open ("C:\Users\Dan\Desktop\Assembly Sheet\Inventory.xlsx") 
Activewindow.WindowState = xlMaximized 
Workbooks("Inventory.xlsx").Activate 
'Find but do not select so we take the value of Find 
Set PartRange = Workbooks("Inventory.xlsx").Worksheets("Inventory").Range("A:A").Find(PartNumber, , xlValues, xlWhole) 

'select only if it found something, tell the user otherwise 
If PartRange Is Nothing Then 
    MsgBox("Part not found!") 
Else 
    PartRange.Select   
End If 
Application.ScreenUpdating = True 

End Sub 
+0

@ litelite yup. 이것은 완벽하게 작동합니다. 선택한 셀에 창 스크롤을 표시 할 수있는 방법이 있습니까? –

+0

@ W.Powell 만약'Application.ScreenUpdating = True'를 쓰려고한다면 – litelite

+0

@liteite Perfect! 정말 고맙습니다! –

관련 문제