0

我们正在尝试通过一系列单元格来寻找特定的字符串。在一种情况下,字符串是可访问性的,但整个字符串是可访问性3.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

任何帮助都会很棒谢谢

4

2 回答 2

1

也许这就是你想要的(我假设“Accesibility”是一个文字字符串)。

改变

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)
于 2013-11-09T01:25:27.087 回答
0

.Find显然是Range.Find方法,因为它包含方法中不存在的参数WorksheetFunction.Find

Range.Find方法需要一个计算结果为Range Object的表达式。

ThisWorkbook.Sheets("Sheet2").column(1)

不评估范围。您可以通过在“立即”窗格中输入来进行测试

ThisWorkbook.Sheets("Sheet2").column(1).select

这将返回错误 438

对象不支持此方法或属性

然而

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并且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你可以使用的东西。

于 2013-11-09T07:04:09.763 回答