gpt4 book ai didi

vba - 使用 ThisWorkbook.Sheets(1).Range 的 Excel vba 代码不起作用,但 Sheet1.Range 工作正常。为什么?

转载 作者:行者123 更新时间:2023-12-04 22:03:09 24 4
gpt4 key购买 nike

当我使用 wb.Sheets(1).Range("A:A").Find(What:=ID, LookIn:=xlValues)我收到错误 91 - 对象变量或未设置 block 。当我使用 Sheet1.Range("A:A").Find(What:=ID, LookIn:=xlValues)它返回正确的值。
为什么有区别?

是否有我可以引用的流程图或任何简单的信息来了解哪些子命令(我不知道正确的词)与 ThisWorkbook 一起使用?和 Sheets(#)Sheet#.Whatever 相比?

我犹豫要不要使用Sheet("Name")因为名字以后可能会改变。我正在使用 ThisWorkbook而不是 ActiveWorkbook将所有代码附加到相应的工作簿。

您可以提供的任何简单引用信息都会很棒。我已经研究过,但仍然不明白哪些子命令与哪些父命令一起使用。 (再次,可能是错误的术语)。

Private Sub lstExample_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
Dim wb As Workbook
Dim I As Integer
Dim ID As String
Dim findValue As Range

Set wb = ThisWorkbook
'Get the values of the selected row in listbox on doubleclick
For I = 0 To lstExample.ListCount - 1
If lstExample.Selected(I) = True Then
'Set listbox column 1 as ID value to find
ID = lstExample.List(I, 1)
End If
Next I

'Match ID (column A) on Sheet1
Set findValue = wb.Sheets(1).Range("A:A").Find(What:=ID, LookIn:=xlValues)
MsgBox findValue
End Sub

最佳答案

Sheets(1) 和 Sheet1 的属性之间没有区别,只要它们是同一个对象 - 在您的情况下是 Worksheet 对象。

您收到该错误是因为 findValue Is Nothing .也就是说,它在列中找不到 ID。使用 Find 方法时,最好指定每个参数。 Find 会记住您最后一次进行的查找,即使您是在 UI 中进行的并且您在 VBA 中使用 Find 也是如此。

例如,如果您在执行 Find 时在 UI 中检查 MatchCase。然后您在 VBA 中进行查找并且不指定 MatchCase 属性,它将使用您上次设置的任何内容。

关于vba - 使用 ThisWorkbook.Sheets(1).Range 的 Excel vba 代码不起作用,但 Sheet1.Range 工作正常。为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30900256/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com