gpt4 book ai didi

vba - 使用数组的自动筛选条件(错误) - 字符串太大?

转载 作者:行者123 更新时间:2023-12-03 07:29:28 24 4
gpt4 key购买 nike

更新:通过一些额外的测试,我发现:
1) 255 个字符似乎是断点(字符限制)。使用字符长度为 245 的数组设置过滤器效果很好——我能够保存并重新打开而没有任何错误。我向数组添加了另一个条件以使长度为 262,保存文件,然后得到相同的错误。
2) removed records 中的工作表消息指的是工作表index ,而不是工作表名称,它确实引用了具有自动过滤功能的工作表。 结束更新

我的问题——我编写了代码来设置数据集的 AutoFilter基于多个切片器中的选定项目。有时当我打开文件时,我得到错误(解释):Excel found unreadable content in the workbook. Do you want to repair the file?然后弹出一个对话框并说Removed Records: Sorting from /xl/worksheets/sheet2.xml part .

代码按设计工作;数据集反射(reflect)了切片器中选择的任何内容(甚至是许多选择)。

我将数组(字符串数组)设置如下,然后使用数组设置条件:

If sCache.Name = "Slicer_Test" Then
For Each sItem In ActiveWorkbook.SlicerCaches(sCache.Name).SlicerItems
If sItem.Selected = True Then
ReDim Preserve sArr(0 To sCount)
sArr(sCount) = sItem.Name
sCount = sCount + 1
End If
Next sItem
filterRng.AutoFilter Field:=9, Criteria1:=sArr, Operator:=xlFilterValues
ReDim sArr(0 To 0)
End If

我为每个切片器复制上述代码。

我认为问题源于三个最大的切片器分别包含 27、120 和 322 个项目。 So as you can imagine, when all the items in the largest slicer are selected, the array's string length is over 5K characters long... like I mentioned above, the code works as designed. I found this thread ,其中提到了一个字符的最大值?

我已经尝试在保存/关闭工作簿之前删除过滤器,但这并不总是有效,并且该文件将被许多其他人使用。所以我想知道 1)是否有人建议解决此错误的方法,或者 2)是否有办法在不使用非常长的数组的情况下完成过滤......

对此的任何想法将不胜感激!

最佳答案

我的一个同事帮我解决了这个问题。

显然在使用这种语法时:

Criteria1:=sArr

Excel 将数组读取为一个长字符串,而不是将其视为包含许多字符串元素的数组。

解决方法是使用 Array()像这样的功能:
Criteria1:=Array(sArr)

这似乎可以防止 Excel 损坏。

关于vba - 使用数组的自动筛选条件(错误) - 字符串太大?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19042181/

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