2016-05-31 15 views
1

このvba subを実行すると、変数Temp1とSearchで返された値はセルの内容であり、セルのアドレスを持つ範囲変数ではありません。excel 2010 vba "find"関数が内容を返します

コードはここにある:

Sub updateFDFList(Fname As String)  
    ' Check for worksheet existence 

    'last filled row 
    Dim lastLine As Long 
    lastLine = Worksheets("FDFFiles").Range("A" & Rows.Count).End(xlUp).row 

    If lastLine = 1 Then 
    'List Is Empty 
    Worksheets("FDFFiles").Cells(2, 1).Value = Fname 
    Worksheets("FDFFiles").Cells(2, 2).Value = "No" 
    Else 
    'Search column A for match 
    Dim Search As Range 
    S1 = "A2:A" & lastLine 
    With Range(S1) 
     Temp1 = .Find(Fname) 
     Search = .Find(Fname, LookAt:=xlWhole, MatchCase:=True) 
     If Search Is Nothing Then 
      Dim newLine 
      newLine = lastLine + 1 
      Worksheets("FDFFiles").Cells(newLine, 1).Value = Fname 
      Worksheets("FDFFiles").Cells(newLine, 2).Value = "No" 
     End If 
     End With 
    End If 
End Sub 
+3

あなたは範囲オブジェクトを設定する必要があります: 'セットの検索= .Find(FNAME、 LookAt:= xlWhole、MatchCase:= True) ' –

答えて

1

あなたがSetキーワードとそれをインスタンス化する必要がありRangeオブジェクトを宣言した後。ここで

が良いとシンプルな説明です:http://www.excel-easy.com/vba/range-object.html

これは言う:

あなたは薄暗いキーワードや設定を使用して、Rangeオブジェクトを宣言することができRangeオブジェクト
を宣言します。

Setがないと、セルのValueを返します。

この質問への答えは詳細にそれを説明する:vba simple range/object error

そしてここでは、MSDNからの例との完全な説明です:https://msdn.microsoft.com/en-us/library/office/ff838238.aspx

+0

ありがとうございました –

関連する問題