2016-03-28 22 views
0

私はいくつかの項目を持つテーブルを持っています。これらのアイテムはすべてコードを持ち、行ごとに繰り返されます。私は、テーブル内のアイテムの最後の「繰り返し」を1つにすることを意味します。アドレスや行の参照が必要なので、後で新しいテーブルに持っていくことができます。最初の表に示されている私たちのアイテムの現在の状況の概要。VBAテーブル列の値を持つ最後の行を検索

'codTeste is a integer in this example 
codTeste = Range("AE:AE").Find(what:="REST0300", after:=Range("AE1"), searchdirection:=xlPrevious).Row 

作業を行いますが、そのような方法がありません:

codTeste = Range(tblDesc.DataBodyRange.Address).Find(what:="REST0300", after:=Range(TheFirstCellOfTheRelevantColumnDataBodyRange), searchdirection:=xlPrevious).Row 
    'If I do this it'll throw me a mismatch error 

ポイントはそう、それはよりダイナミックにすることであろう そして、私はほとんどそれは、次のコードを持っています非常に特定の範囲のパラメータにfindメソッドを制限しないために...

+0

を@stepsいます手動でそれを見つけると、正しい構文を見つけて必要に応じてコードを調整することができます。 –

+0

@ScottHoltzman、ちょっとスコット;私はあなたが提案していることのジストを理解していますが、正直に言うとマクロを記録する経験はあまりありません...録音中に手動でどのように見つけたらいいですか? – steps

答えて

0

dim inCol整数

inCol =ワークシート( "Sheet1")Cells.Find(What:= "Product Code"、After:=ワークシート( "Sheet1"))、Range( "A1")、LookIn:= xlValues、ルックアット:= xlWhole、SearchOrder:= xlByRows、SearchDirection:= xlPrevious).Column

私がコメントすることはできませんが、これは、あなたがマクロ意志を記録した場合に名前を与えられた列番号が

+0

私は "ダイレクトリファレンスの種類"を探していましたが、これは素晴らしい代替手段です、ありがとう! ちょうど1つの小さな修正、私はxlPreviousで値を取得していた 私はそれをxlNextに変更し、少なくとも私の現在のワークブックに適切な列インデックスを提供しました。 だから、あなたとティムは基本的に答えです:pありがとう。 – steps

+0

うれしいことに助けてくれました – jcarroll

0

これは私の作品:

Dim trng As Range, f As Range, inCol As Long 
Set trng = ActiveSheet.ListObjects("Table1").DataBodyRange 

useCol = 2 

Set f = trng.Columns(inCol).Find(what:="77", LookIn:=xlValues, lookat:=xlWhole, _ 
     searchdirection:=xlPrevious, after:=trng.Columns(inCol).Cells(1)) 

If Not f Is Nothing Then Debug.Print f.Row 
+0

それは素晴らしい動作しますが、列の番号(inCol)の代わりに、私はそこに探している列の名前を入れる方法がありますか?最初の問題が残るように数字を追加するのが怖いです。 私の例では「製品コード」となります。その列を番号ではなく名前で参照したいと思います。これはそれをよりダイナミックにするでしょう(または私が間違っていると私に正しいことを信じます) – steps

関連する問題