2016-05-24 37 views
0

我想在沒有運氣的listObject(表)上使用find方法。我一直在尋找一些解決方案,結果相同。我發現的唯一的ansers是使用範圍對象的find方法,這不是我的情況。如何使用表中的查找方法

我將不勝感激關於如何在listObject中查找數據的任何信息或示例。

編輯:這裏

Sub WA_suchen_test() 
Dim WA_Nummer As Long 
Dim pos As Byte 
Dim lo As ListObject 
Dim rng_anfang As Range 
Dim rng_ende As Range 
Dim i As Long 

WA_Nummer = 1356794 
Set lo = ThisWorkbook.Worksheets("offene_WA").ListObjects("tb_offene_WA") 

rng_anfang = lo.Range.Find(WA_Nummer, lo.ListColumns("WA") _ 
.DataBodyRange(1, 1), xlValues, xlWhole, xlByColumns, xlNext, True) 

rng_ende = lo.ListColumns("WA").DataBodyRange.Find(WA_Nummer, rng_anfang, _ 
xlValues, xlWhole, xlByColumns, xlPrevious, True) 
MsgBox rng_anfang.Address & "/" & rng_ende.Address 

End Sub 

宏拋出錯誤NR的代碼。 91之後的Set指令。

(請不要與pos定義猶豫,它會在後面的代碼中使用。)

感謝, 查理

+0

當將'Find'操作的結果賦予'Range'變量時,你需要使用'Set'。另外,你的第一個「Find」操作的參數沒有意義。你似乎有一個太多 - 看起來你應該刪除'lo.ListColumns(「WA」)' – Rory

+0

非常感謝@Rory,就是這樣!我嘗試了現有的參數,它工作正常,我只想搜索一列,而不是整個表。如果您將您的評論寫爲答案,我會很樂意將其標記爲已解決。 – elserra

+0

我已在下面更新了我的答案,以包含評論。 :) – Rory

回答

0

一個Listobject有你可以用查找使用多種性能範圍:

RangeDataBodyRangeHeaderRowRange(和InsertRowRange雖然這是不太可能的選擇)。

編輯: 查看上面的代碼,在將Find操作的結果分配給Range變量時,需要使用Set。另外,您的第一個Find操作的參數沒有意義。你似乎有一個太多 - 看起來你應該刪除lo.ListColumns("WA")

+0

感謝@rory,但我已經意識到這一點。問題是,雖然我使用'Range',但我得到一個錯誤消息,說方法不被支持。 例如: 'ThisWorkbook.Worksheets(「offene_WA」)。ListObjects(「tb_offene_WA」)。Range.Find(value,Range)' 或者我使用它錯了? – elserra

+0

@elserra將您的代碼添加到您的原始文章中,並重新編寫問題以顯示示例。 –

+0

我建議你將完整的代碼添加到問題中,因爲這應該起作用(取決於第二個「範圍」是什麼意思) – Rory

相關問題