gpt4 book ai didi

excel - VBA 下标超出范围,名称解析问题?

转载 作者:行者123 更新时间:2023-12-04 21:50:51 26 4
gpt4 key购买 nike

尝试编写一个 VBA 函数,该函数将返回给定标题单元格字符串和工作表名称的列号,但我得到下标超出范围错误。
这是功能:

Public Function namedColumnNo(heading As String, shtName As String) As Long
' Return the column number with named header text'
' on given worksheet.
Dim r As Range
Dim wks As Worksheet

Debug.Print shtName
'Exit Function

Set wks = Sheets(shtName)
wks.Range("1:1").Select
With wks
r = .Range("1:1").Find(heading, LookIn:=xlValue)
If r Is Nothing Then
namedColumnNo = -1
Else: namedColumnNo = r.Column
End If

End With

End Function

我正在使用这个测试子来调用函数:
Public Sub getCol()

Debug.Print "Find MidTemp on " & DataSht.RawDataSht
Debug.Print "Col " & namedColumnNo("MidTemp", DataSht.RawDataSht)

End Sub

我有一个用户定义的类型 DataSht,其中我有变量来命名工作表,例如
Public Type dataShtNames
HeaderSht As String
RawDataSht As String
ResultDataSht As String
End Type
Public DataSht As dataShtNames

使用未注释的 Exit Function 语句,我得到的 debug.print 语句可以解决变量
Find MidTemp on RawData
RawData:MidTemp
Col 0

让函数运行错误发生在 Set wks = Sheets(shtName)如果我将参数 shtName 替换为作为字符串“RawData”的实际工作表名称,则错误会向下移动到使用第二个参数 heading 的行.如果我在这里用字符串替换参数,错误仍然存​​在。
我在这里缺少什么吗?一些帮助将不胜感激。

最佳答案

遗憾的是无法发表评论,但您实际上得到了 out of range错误,因为它应该是 LookIn:=xlValues你在哪里 LookIn:=xlValue
正如@Mathieu 所指出的,您需要修复添加 Set r = Find(heading, LookIn:=xlValues)将范围设置为返回的值。

作为旁注 - 你应该放弃选择。它没有为你做任何事情。

With wks.Range("1:1")
Set r = .Find(heading, LookIn:=xlValues)
If r Is Nothing Then
namedColumnNo = -1
Else: namedColumnNo = r.Column
End If

End With

关于excel - VBA 下标超出范围,名称解析问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54334691/

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