2012-07-19 45 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

相关问题