gpt4 book ai didi

excel - 打开工作簿下标超出范围

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

我编写了 VBA 代码来打开位于服务器上的不同工作表并将其中的一些数据复制到主工作表。之后它们被关闭。它运行良好,对我来说完全没有问题,但我有一台无法运行的 PC,它显示“下标超出范围”。它打开工作表,但找不到我需要的工作表。网络位置以相同的名称映射到两台 PC 上。
For 查找日期为 -1 的列并设置 i 为坐标。
稍后 While 正在检查单元格是否没有填充,因为彩色单元格无关紧要。如果是这样,只要找到未填充的单元格,它就会在左侧单元格上移动。

 Sub importData()
Dim sht As String
Dim i As Integer
sht = Cstr(Date - 1)
Dim Temp(1 To 38) As String


For i = 4 To 42
If Cells(3, i).Value = sht Then
Exit For
End If
Next i

While Cells(2, i).Interior.ColorIndex <> xlColorIndexNone
i = i - 1
sht = Cells(3, i).Value
Wend

Workbooks.Open "path to file & filename.xlsm"
Workbooks("filename").Worksheets(sht)
我真的找不到为什么它可以在我的 PC 上运行,而不能在其他计算机上运行。也许有人看到了我没看到的东西。

最佳答案

问题出在sht = Cstr(Date - 1) .Cstr将根据操作系统中设置的日期格式将日期转换为字符串。在我的情况下是 yyyy-mm-dd所以今天我会得到结果2022-06-01这将用作工作表名称。
现在,如果您的计算机日期设置为 mm/dd/yyyy例如,您的计算机生成 06/01/2022作为工作表名称。所以这不是生成字符串的可靠方法。
而是使用 Format function并定义您的字符串应具有的格式:

sht = Format$(Date - 1, "yyyy-mm-dd")
现在,无论您的计算机使用哪种日期格式,这将始终生成相同的字符串。

不是因为您使用 Cells(3, i).Value = sht 中的文本还要确保您是否在单元格中使用数字日期而不使用 String比较它,但也是一个数字日期:
Cells(3, i).Value = Date - 1
否则,如果计算机日期的格式不同,您也可能在这里失败! sht = Cells(3, i).Value 也是如此如果单元格值是数字日期而不是您需要使用的文本/字符串
sht = Format$(Cells(3, i).Value, "yyyy-mm-dd")
并定义格式。

关于excel - 打开工作簿下标超出范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72472397/

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