2016-12-07 6 views
1

find関数を使用してセルアドレスを取得する方法に問題があります。ここで私は、コードをデバッグしようとすると、問題は、変数が「文字列」の代わりに、セルのアドレスが含まれている「発見」、あるコードexcel vbaでFind関数からセルアドレスを取得する方法

Dim Found As Range 

Set Found = Worksheets("Sheet 1").Cells.Find(What:="test", LookAt:=xlWhole, MatchCase:=True) 

    If Not Found Is Nothing Then 
      ' do something 
    End If 

です。

私のコードに何が問題なのか?

+0

'Found'変数には' String'が含まれていないので、 'Range'オブジェクトとして宣言しました。 ['Range'は' Address'プロパティを持っています(https://msdn.microsoft.com/en-us/library/office/ff837625.aspx) - それを使用してください。表示されている文字列のコンテンツは、範囲の「値」です。これは*デフォルトプロパティ*(メンバーが指定されていない場合に暗黙的に参照されるメンバー)です。 –

答えて

4

found.addressは文字列として表示されても使用できるようです。以下のコードは私のために働いた。

Sub findCellAddress() 

    Dim ra As Range 

    Set ra = Cells.Find(What:="fff", LookIn:=xlFormulas, LookAt _ 
     :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _ 
     False, SearchFormat:=False) 

    If ra Is Nothing Then 
     MsgBox ("Not found") 
     Else 
     MsgBox (ra.Address) 
    End If 

End Sub 
+2

'Find'は' Nothing'を返すことができるので、最後に '.Address'をタックするのは[実行時エラー91のためだけです](http://stackoverflow.com/search?q=%5Bexcel-vba %5D + find + error + 91)。 'Find'は一時的な' Range'オブジェクトに設定され、いずれかのプロパティが使われる前に 'Nothing'に対してテストされるべきです。 – Comintern

+0

こんにちは@ nightcrawler23あなたのフィードバックに感謝します。 "ra.Address"から行と列を別々に取得する方法はありますか?私はそれをセル選択に適用したい(例:Cells(1,2)) –

+0

Rangeには行と列のプロパティがあります。したがって、ra.Rowとra.Columnを使用して値を取得できます。 https://msdn.microsoft.com/en-us/library/office/ff838238.aspx#Anchor_3 – nightcrawler23

関連する問題