gpt4 book ai didi

excel - 根据条件创建命名范围时出现运行时错误

转载 作者:行者123 更新时间:2023-12-04 21:49:43 24 4
gpt4 key购买 nike

我有以下通过表格的代码。当它在 C 列中找到单词“Reporting”,在 B 列中找到“OSI”时,它会为 B 列和 C 列中的条件为真的每一行创建一个名为“OSIRep”的范围,该范围从 D-E-F 列开始。

但是,当我将单词更改为“Security”和“OSI”以创建范围“OSISec”时,我收到一个错误,我不知道为什么。错误是“运行时错误 1004 - 对象“_Worksheet”的方法“范围”失败”,这发生在 sht.Range(sRng)

它正在搜索的范围没有什么不同,我尝试创建的名称不存在并且我的条件存在。有任何想法吗?

我曾尝试保护工作表,解锁单元格并探索错误代码,但均无济于事。

提前感谢您提供的任何帮助或见解!

Set sht = ThisWorkbook.Worksheets("Features")

Set featuresRng = sht.Range(sht.Range("B1"), sht.Range("C" & sht.Rows.Count).End(xlUp))
rngArray = featuresRng
ReDim NewArr(1 To 1)
y = 1
For i = 1 To UBound(rngArray)
If rngArray(i, 2) = "Reporting" And rngArray(i, 1) = "OSI" Then
ReDim Preserve NewArr(1 To y)
NewArr(y) = featuresRng.Rows(i).Resize(1, 3).Offset(0, 2).Address
y = y + 1

End If
Next i

sRng = Join(NewArr, Application.DecimalSeparator)
ThisWorkbook.Names.Add "OSIRep", sht.Range(sRng)

最佳答案

根据我的评论,Range仅接受 255 个字符的地址字符串,因此您最好在循环时处理实际的 Range 对象:

For i = 1 To UBound(rngArray)
If rngArray(i, 2) = "Reporting" And rngArray(i, 1) = "OSI" Then
Dim OutputRange As Range
If OutputRange Is Nothing Then
Set OutputRange = featuresRng.Rows(i).Resize(1, 3).Offset(0, 2)
Else
Set OutputRange = Union(OutputRange, featuresRng.Rows(i).Resize(1, 3).Offset(0, 2))
End If
End If
Next i

If Not OutputRange Is Nothing Then OutputRange.Name = "OSIRep"

关于excel - 根据条件创建命名范围时出现运行时错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57054644/

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