2017-05-04 11 views
-1

現在、私はどこにあるのかわからないので、検索で必要なデータを見つけようとしていて、そのデータを別のシートにコピーしています。私はこれを何度もやる必要があります。コピー&ペーストエラーへの選択

しかし、私はオブジェクト変数のエラーを取得しておくか、ブロック変数私の第二のfindに設定されていないと、それはライン上にある:

.range(Selection, Selection.End(xlDown)).Select 

マイコード

Dim ran, r As range 
With Sheet2 
    Set ran = .Cells.find(What:="User Defined Label 4", LookIn:=xlValues, LookAt:=xlWhole) 
    ran.Select 
    .range(Selection, Selection.End(xlDown)).Select 
    Selection.Copy 
    Sheet9.range("A1").PasteSpecial 

    Set r = .Cells.find(What:="V Align", LookIn:=xlValues, LookAt:=xlWhole) 
    r.Select 
    .range(Selection, Selection.End(xlDown)).Select 
    Selection.Copy 
    Sheet9.range("B1").PasteSpecial 
End With 

答えて

0

数あなたに関するコメント:

Dim ran, r As rangeは、ranVariantであり、rRangeである。

2.持ってする必要はありません:

ran.Select 
.range(Selection, Selection.End(xlDown)).Select 
Selection.Copy 

だけで任意のSelect INGなしRange完全qualifedを使用します。

.Range(Ran, Ran.End(xlDown)).Copy 

3.あなたFindを見つけることができたことを確認してくださいあなたが探していた文字列/値は、If Not Ran Is Nothing Thenです。

は、以下のコードを試してみてください。

Option Explicit 

Sub UseFind() 

Dim Ran As Range, r As Range 

With Sheet2 
    Set Ran = .Cells.Find(What:="User Defined Label 4", LookIn:=xlValues, LookAt:=xlWhole) 
    If Not Ran Is Nothing Then ' <-- make sure Find was successful 
     .Range(Ran, Ran.End(xlDown)).Copy 
     Sheet9.Range("A1").PasteSpecial 
    End If 

    ' add your second "Find" here 

End With  

End Sub 
+0

ああ、私は走っ、rは同じだろうと思いました!範囲オブジェクトを使用する方法については確信していなかったので、私はコードをオンラインから抜きました!ご協力いただきありがとうございます ! –

+0

はい、動作しています!どのようにしてfindを使って正確な一致を使わないようにすることができますか –

+0

@RachelChiaは 'LookAt:= xlWhole'を' LookAt:= xlPart'に変更します –

関連する問題