我们正试图通过一系列寻找特定字符串的单元格 . 在一种情况下,字符串是可访问性,但整个字符串是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
任何帮助都会很棒谢谢
2 回答
也许这就是你想要的(我假设“Accesibility”是一个文字字符串) .
更改
rng = ThisWorkbook.Sheets("Sheet2").Column(1).Find(What:=Accessibility, _ LookIn:=x1Values, LookAt:=x1Whole, MatchCase:=True)
至
您的
.Find
显然是Range.Find
方法,因为它包含WorksheetFunction.Find
方法中不存在的参数 .Range.Find
方法需要一个计算结果为 Range Object 的表达式 .不评估范围 . 您可以通过在“立即”窗格中输入来测试此项
这将返回错误438
而
在立即窗格中工作正常,所以用
ThisWorkbook.Sheets("Sheet2").Range("A:A")
替换ThisWorkbook.Sheets("Sheet2").Column(1)
从
Range.Find
方法返回的是一个范围,因此应该将返回的变量定义为范围如果模块顶部没有
Option Explicit
, all variables are assumed by VBA to be of Variant Type 但变体类型不能与对象类型互换 .如果通过工具>选项>编辑器选项卡将您的VBA IDE设置为始终"Require variable declaration"
Option Explicit
将添加到项目中的每个模块,您将不会遇到不正确的变量调用 .现在 Objects 无法使用
ObjectName = ...
分配 . 它们必须是 Set ,使用Set ObjectName = ...
,并且返回值必须与要设置的对象的类型相同 .如果你
Dim rng as Range
那么Set rng = ...
右侧的方法必须返回相同类型的对象,否则将发生错误 .您的
What:=Accessibility,
正在尝试查找可能不存在的名为Accessibility的变量的内容 . 找到字符串"Accesibility"
即使嵌入其他字符中也会起作用LookAt:=xlPart
.总结一下:
定义你的对象
Dim rng as Range
并改变你的路线
至:
应该留给你一个可以使用的
rng.value
.