2014-09-23 45 views
-1

因此,目前我有一個函數,將在表中搜索兩個術語,並返回True或False,具體取決於它是否找到它。現在,我試圖完成的是,如果我找到該條目,我想將整個行中找到的條目複製到另一個表單。我遇到了一些麻煩,我不完全知道如何繼續。VBA將行復制到另一個表,如果它匹配搜索

這裏是我的源代碼:

Private Function Search(BinStr As String, L4 As String) As Boolean 
    Dim rng1 As Range 
    Dim rng2 As Range 

    Set rng1 = Worksheets("FirstSheet").Range("A:A").Find(BinStr, , xlValues, xlWhole) 
    Set rng2 = Worksheets("FirstSheet").Range("C:C").Find(L4, , xlValues, xlWhole) 
    If Not rng1 Is Nothing And Not rng2 Is Nothing Then 
     rng1.Offset(0,1).Copy Destination:=Worksheets("Matches").Range("A") 
     Search = True 
    Else 
     Search = False 
    End If 
End Function 
+0

嗨,它已經有一段時間我的VBA但改變這一行 rng1.Offset(0,1).Copy目的地:=工作表( 「匹配」)範圍( 「A」) 到 。 rng1.Offset(0,1).EntireRow.Copy Destination:= Worksheets(「Matches」)。Range(「A」) help? – ojf 2014-09-23 13:23:04

+0

但是,這將有2行,它會發現匹配在...你想要兩個複製?以及如果兩個匹配發生在同一行? – 2014-09-23 13:23:41

+0

另外,雖然不是必需的,但是你通常不希望函數執行某個操作(例如複製行) - 它通常用於返回值,然後使用該值... – 2014-09-23 13:24:53

回答

1

功能是爲了返回值。根據您提供的信息,您應該真正使用一個利用您的自定義搜索功能的子程序。

Sub CopyMatches() 
    If Search("string","other string") Then 
     'code to copy row data to other worksheet 
    End If 
End Sub 
+0

該子程序看起來像這樣,但原來的子程序實際上並不知道搜索中發生了什麼,因爲它在另一個工作表中搜索。 – 2014-09-23 18:30:50

+0

用使用該功能的代碼編輯您的問題。你的答案將反映你給我們多少細節。 – 2014-09-24 18:30:36

相關問題