我们正在尝试查找一系列寻找特定字符串的单元格。在一种情况下,字符串是可访问性,但整个字符串是accessibility3.2。然后我们要将字符串粘贴到另一张纸上的单元格中。
然后下一次循环它可能是accessibility5.8
这是我们编写的一些代码:
srtDate = ThisWorkbook.Sheets("Website Quality").Cells(9, 3).Value
rng = ThisWorkbook.Sheets("Sheet2").Column(1).Find(What:=Accessibility, _
LookIn:=x1Values, LookAt:=x1Whole, MatchCase:=True)
srtDate.Value = rng.Value
任何帮助都会很棒 感谢
答案 0 :(得分:1)
也许这就是你想要的(我假设“辅助功能”是一个文字字符串)。
更改
rng = ThisWorkbook.Sheets("Sheet2").Column(1).Find(What:=Accessibility, _
LookIn:=x1Values, LookAt:=x1Whole, MatchCase:=True)
到
Set rng = ThisWorkbook.Sheets("Sheet2").Columns(1).Find(What:="Accessibility", _
LookIn:=x1Values, LookAt:=x1Part, MatchCase:=True)
答案 1 :(得分:0)
您的.Find
显然是Range.Find
方法,因为它包含WorksheetFunction.Find
方法中不存在的参数。
Range.Find
方法需要一个计算结果为范围对象的表达式。
ThisWorkbook.Sheets("Sheet2").column(1)
不评估范围。您可以通过进入立即窗格
来测试ThisWorkbook.Sheets("Sheet2").column(1).select
将返回错误438
Object不支持此方法或属性
而
ThisWorkbook.Sheets("Sheet2").Range("A:A").select
在“立即”窗格中工作正常,因此请将ThisWorkbook.Sheets("Sheet2").Column(1)
替换为ThisWorkbook.Sheets("Sheet2").Range("A:A")
从Range.Find
方法返回的是一个范围,因此应该将返回的变量定义为范围
Dim rng as Range
如果模块顶部没有Option Explicit
,则 VBA假定所有变量都是变体类型,但变体类型不能与对象类型互换。
如果您通过工具>将VBA IDE设置为始终“需要变量声明”选项>编辑器选项卡Option Explicit
将添加到项目中的每个模块中,您不会遇到不正确的变量调用。
现在无法使用ObjectName = ...
分配对象。它们必须使用Set ObjectName = ...
设置,并且返回值必须与要设置的对象的类型相同。
如果您Dim rng as Range
,则Set rng = ...
右侧的方法必须返回相同类型的对象,否则将发生错误。
您的What:=Accessibility,
正在尝试查找可能不存在的名为Accessibility的变量的内容。如果您"Accesibility"
,即使字符串LookAt:=xlPart
嵌入其他字符中,它也会有效。
总结:
定义您的对象Dim rng as Range
并更改您的行
rng = ThisWorkbook.Sheets("Sheet2").Column(1).Find(What:=Accessibility, _
LookIn:=x1Values, LookAt:=x1Whole, MatchCase:=True)
为:
With ThisWorkbook.Sheets("Sheet2").Range("A:A")
Set rng = .Find(what:="Accessibility, LookIn:=xlValues, LookAt:=xlPart)
End With
应该为您留下可以使用的rng.value
。