使用“查找功能”和“ ActiveCell”时出现错误91?

时间:2019-07-17 20:17:47

标签: excel vba

单步执行代码时出现运行时91错误。
代码的重点是使用ActiveCell(将在H列中)匹配D列中的值,然后向右看4个单元格并复制该行中的下222个单元格。目的地是ActiveCell右侧的一个单元格。然后,我想清除单元格。

Sub MirrorUsers()
Dim WS1 As Worksheet
Dim Rng1 As Range
Dim Rng2 As Range

Application.ScreenUpdating = False

Set WS1 = ActiveSheet
Set Rng1 = WS1.Range(WS1.Range("H2"), WS1.Range("H" & Rows.Count).End(xlUp))
Set Rng2 = WS1.Range(WS1.Range("D2"), WS1.Range("D" & Rows.Count).End(xlUp))

Rng2.Find(What:=ActiveCell).Offset(, 4).Resize(, 222).Copy 
Destination:=ActiveCell.Offset(, 1)

Rng1.Clear

End Sub

我希望值能够反映特定单元格中的其他行值。我目前收到运行时错误91。

1 个答案:

答案 0 :(得分:0)

错误91表示您的Find找不到任何内容。将您的代码更改为此

Set rFound = Rng2.Find(What:=ActiveCell)

Debug.Assert Not rFound Is Nothing

rFound.Offset(, 4).Resize(, 222).Copy _
Destination:=ActiveCell.Offset(, 1)

,您会看到rFoundNothing。错误是您正在尝试在不存在的范围内使用Offset属性。您必须弄清楚为什么找不到它,但是这里有一些尝试:

首先,在代码中使用Find时,请包含尽可能多的参数。如果在“ UI查找”对话框中更改参数,则该参数将保留。因此,您可以在不需要时搜索整个单元格内容。或者,当您需要值时,您可能会在公式中查看。

确保没有尾随空格或其他不可打印的字符妨碍匹配。

确保数字是数字,文本是文本,并且不要混用仅看起来像是数字的文本。