【发布时间】:2015-08-24 12:33:29
【问题描述】:
我的名字是 Joe,我是 Excel VBA 编程的非常新手。在实习期间,我被要求编写一个有助于分析停车数据的程序,我决定使用 Excel 作为基础来存储数据并创建图表。我还决定我需要使用宏来改进程序的功能和自动化。
我学习了基本的 Excel VBA 只是为了开发这个表格,所以这是我第一次在 Excel 中编写宏。
无论如何,工作表的数据存储在不同时间段的列中,并且列顶部的单元格标记了该列。数据按土地利用类型分隔,例如购物中心、电影院、超市等。用户可以单击组合框来选择土地利用,并有一个宏显示相应土地利用的数据使用 Range.Find 方法的图表。我的问题是一些土地用途没有与它们相关的不同功能的数据,我希望能够在 Range.Find 方法返回错误之前知道这一点。因此,我认为一个简单的 If 语句可以通过合并 Range.Find.Execute 方法来工作,该方法应该返回一个布尔值,但在运行时总是返回一个错误,“Argument not Optional”。调试器总是突出显示“查找”。
我正在 Excel IDE 中进行编辑(如果您可以这样称呼它),而不是外部 VBA 编辑器。我当前的 Excel 版本是 2010。
我还搜索了 Stack Overflow、MSDN 和其他网站以寻求答案,但我似乎找不到答案。如果我错过了这个问题的答案,如果我找到或有人指出,我会删除它。
下面是一些可以在工作表中使用的示例代码,除了第一行总是返回错误。 MSDN 网站上的示例代码似乎也不起作用。
If Range("A1:B20").Find.Execute(ComboBox1.Value) = True Then
Range("A1:B20").Find(ComboBox1.Value).Activate
'And do this
Else
MsgBox ("No data available for this selection.")
'And do this
End If
【问题讨论】:
-
我注意到您使用的
Find对象和Execute方法似乎是Microsoft Word 对象和方法,而不是Excel。 -
@Soulfire 谢谢,似乎是这样。我在想它返回一个布尔值,它在 word 中执行,但它在 Excel 中返回一个范围对象。