2017-04-20 44 views
0

我正在尋找一個代碼,以找到一個行中的「1263_Estamp_En」在範圍「J1」並wan以選擇相同的列並將其粘貼到另一個工作簿,但運行代碼時excel停止工作並重新啓動,請幫助我如何搜索範圍並選擇值。下面是代碼...Excel停止工作,而使用查找

Sub Search() 

Dim A As Range 
Dim myRng As Range 
Dim R As Range 
Dim Col 

ThisWorkbook.Sheets("Result").Activate 
Set R = Range("A1:Z1") 
ThisWorkbook.Sheets("Sheet1").Activate 
Set A = Range("A1") 
myRng = R.Find(what:=Str(A), LookIn:=xlValue) 
Cells(myRng.Row, myRng.Column).Select 
Col = Selection.Column 
Col.select 
Range(selection,selection.end(xldown)).copy 
Thisworkbook.Sheets("Sheet2").Activate 
Range("A1").Pastespecial xlPasteValues 

End Sub 
+0

[避免選擇並激活( http://stackoverflow.com/q/10714251/1188513) –

+0

@ Mat'sMug除了避免選擇和激活什麼可以做,以避免關閉excel –

回答

2

我認爲你正在尋找的東西像下面的代碼(沒有所有的不必要ActivateSelectionSelect):

Option Explicit 

Sub Search() 

Dim A As Range 
Dim myRng As Range 
Dim R As Range 
Dim Col 

Set R = Sheets("Result").Range("A1:Z1") 
Set A = Sheets("Sheet1").Range("A1") 

Set myRng = R.Find(what:=CStr(A.Value), LookIn:=xlValue, lookat:=xlWhole) 

If Not myRng Is Nothing Then ' <-- check if Find was successful 
    ' rest of your code goes here 
    myRng.EntireColumn.Copy <-- copy entire Column where found 
    Sheets("Sheet2").Range("A1").PasteSpecial xlPasteValues 
End If 

End Sub 
+0

運行時錯誤9下標超出範圍'Set myRng = R.Find(什麼:= CStr(A.Value),LookIn:= xlValue,lookat:= xlWhole)' –

+0

@VBAToddler這條線呢?我試圖猜測你在尋找什麼? –

+0

我刪除了'LookIn:xlValue'代碼正在工作現在代碼是'Set myRng = R.Find(what:= CStr(A.Value),lookat:= xlWhole)'。謝謝 –