我将常量字符串定义为单元格,如下所示:
Const LID_LIFTED As String = "A19"
一切似乎都很好,但当我将批量内容从 PDF 转换为 Excel 时,行会稍微移动,因此 A19 的值最终可能会落在 A18 甚至 A16 上。我得出的结论是,最好是在字符串出现时抓住我的恒定值,然后考虑偏移量或其他东西。
我不知道如何将字符串的一部分分配给我的 Const 值
I tried:
Const LID_LIFTED As String = Like *"Lifted*"
我还考虑过:
https://excelmacromastery.com/excel-vba-find/ https://excelmacromastery.com/excel-vba-find/
Dim rng1 As Range
Set rng1 = Range("A1:A100").Find("*lifted*")
Const LID_LIFTED As String = rng1
我收到一个错误:
“需要不断的表达”
下面的另一个选项:
Dim ws As Worksheet
Set ws = ThisWorkbook.ActiveSheet
Dim String1 As String
String1 = ws.Range("A1:A100").Find(what:="lifted", lookat:=xlWhole)
抛出错误:
“对象变量或未设置变量”
第三个选项:
Dim txt1 As Long
txt1 = Application.WorksheetFunction.Match("*lifted*", Range("A1:A100"), 0)
无法使用以下错误:
“无法获取 WorksheetFunction 类的 Match 属性”
如何在我的 Const 值中包含部分字符串?
常量必须可解析为编译时间- 它们不被评估run time。这意味着常量需要是固定值(或基于其他固定值),而不是需要在分配该值之前运行代码的东西。
Find()
返回一个Range
对象(或Nothing
如果没有匹配),所以你不能安全地将返回值分配给字符串
Const LID_LIFTED As String = "Lifted"
Dim f As Range
'specify a worksheet, and provide all arguments to Find which might affect the outcome...
Set f = Sheets("Sheet1").Range("A1:A100").Find(What:=LID_LIFTED, _
Lookat:=xlPart, lookin:=xlValues)
If Not f Is Nothing then
'do something with f
End If
您的最后一个选项应该有效(并且对我有用),尽管您可能应该为要搜索的范围指定特定的工作表。WorksheetFunction.Match()
如果没有匹配,则会引发运行时错误 - 这就是您所看到的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)