2012-07-19 77 views
2

澄清。我有1個電子表格,我正在創建VBA。當宏運行時,我希望代碼在單獨的工作簿工作表中找到特定值,並返回其他工作簿中值的位置。在單獨的工作簿中返回特定值的單元格位置

我最初的想法是使用HLookUp,但只會返回值,而不是值的位置。我的下一個想法是使用查找功能,但我不能讓它運行。我得到的錯誤是:運行時錯誤「438' :對象不支持此屬性或方法

startValue = enrollBook.Sheets("Pop-FY").Range("D:Z"). _ 
Applications.WorksheetFunction. _ 
Find(What:=FYString, LookIn:=xlValues) 

enrollBook是其他工作簿 在startValue應該是找到的值的位置的。其他電子表格

回答

4

這是調用一個函數&格式化你到了那裏的奇怪的是,我第一次甚至認爲代碼是無效的。

首先,你與Application.WorksheetFunction.Find混淆Range.Find,你還需要一個Range ,但打電話給其他人一個。
其次,錯誤是因爲它是Application,而不是Applications
第三,你將需要一個Set

Set startValue = enrollBook.Sheets("Pop-FY").Range("D:Z").Find(What:=FYString, LookIn:=xlValues) 
+0

好吧,它運行正常。但是,執行後startValue等於我正在查找的值(FYString),而不是RegisterBook中FYString的位置。 – dancran 2012-07-19 15:36:43

+0

@dancran你是怎麼檢查的?通過將光標懸停在它上面?然後它會告訴你'Value'屬性。 – GSerg 2012-07-19 15:39:05

+0

是的,通過懸停在它上面。然而,我只是使用上面所說的(startValue.Address)做了一個快速檢查,它給了我的位置。謝謝!! – dancran 2012-07-19 15:41:42

1

你的意思是這樣的嗎?

Dim sTest   As String 
Dim oRange   As Range 

Set oRange = Worksheets(1).Range("A1:Z10000").Find("Test", lookat:=xlPart) 
MsgBox oRange.Address 

我測試過這一點,但你需要更改的參數。

+0

您可以通過將dim sTest聲明爲字符串並定義sTest = oRange.address來將地址放入字符串中 – Trace 2012-07-19 15:22:46

+0

謝謝Kim。這個地址對我來說是一個很大的幫助。 – dancran 2012-07-19 15:42:41

+0

沒問題Dancran。 – Trace 2012-07-19 15:48:21

相關問題