繁体   English   中英

将 Find VBA 函数与定义的字符串一起使用

[英]Using the Find VBA function with Defined String

嘿,也许我在这里没有看到明显的东西,但是如何使用带有预定义变量的 Find VBA 函数。 我正在使用从用户表单分配的字符串的串联,并且在它前面只是“总计”,但我无法返回该行。

下面是我的代码

Dim HBWS As Worksheet
Dim TickerString As String
TickerString = "Total " & TTB
Set HBWS = Sheets("Hoenheimm Worksheet")


BorrowColumn = HBWS.Cells.Find(What:="Borrow").Column 'Works just fine
TickerRow = HBWS.Cells.Find(What:=TickerString).Row 'Throws an error

请注意,TTB 设置为股票代码 ex。 AAPL,我可以在我的本地窗口中查看 Tickerstring 实际上=“Total AAPL”

我希望 .Row 列在我的工作表上为我提供有关此字符串所在位置的行。

编辑:抛出的错误如下...

“运行时错误‘91’:

对象变量或未设置块变量”

任何通过,谢谢

您正在调用Range.Find 该方法返回一个Range对象引用 - 当它没有找到它被告知要查找的内容时,它返回Nothing ,即一个null 引用

TickerRow = HBWS.Cells.Find(What:=TickerString).Row 'Throws an error

这段代码所做的(以及它上面的工作指令)是假设Find返回一个有效的对象引用。

显然HBWS.Cells不包含"Total " & TTB (无论TTB是),那么你的代码是有效试图调用Range.Row对一个Range引用这Nothing ......这是非法的,并提出了运行时错误91你正在经历。

您永远不应该假设Find会返回一个有效的引用。 拆分它,并使用If ... Is Nothing检查来验证返回的对象引用:

Set tickerResult = HBWS.Cells.Find(What:=TickerString)
If Not tickerResult Is Nothing Then
    tickerRow = tickerResult.Row
Else
    'tickerString was not found. 
    'watch for leading/trailing/extra spaces if the string does *look* legit.
End If

在调用Range.Find ,您应该始终为可选参数提供一个值,因为它的实现“记住”了先前调用的值,这很容易出错。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM