gpt4 book ai didi

VBA 不能引用在代码之前存在的工作表中的范围

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

我目前正在构建一些代码,在一个工作表(事件工作表)中创建一堆格式化数据,然后将该数据传输到新工作表。

问题是,当我尝试按名称指定工作表时,如果工作表在代码运行之前存在,则它不起作用。

因此,在下面的代码中,我在“.Range(Cells(1,1), Cells(7,3)).Interior.Color = RGB( 100,100,100)”,仅当“Topline”工作表在运行代码之前存在时。如果我删除工作表并让代码添加并命名“Topline”工作表,我会得到相同的错误,但在“Data.Range(Cells(x + 2, 1), Cells(x + a, 3)) 行。复制”

我试过用谷歌搜索,但完全不知道为什么这段代码只适用于运行它之前不存在的工作表。任何帮助是极大的赞赏。我几乎愿意打赌答案是显而易见的。

这是困扰我的代码:

For i = 1 To Worksheets.Count
If Worksheets(i).Name = "Topline" Then TE = True
If Worksheets(i).Name = "Data" Then DE = True
Next i

If TE = False Then Worksheets.Add(After:=Worksheets(1)).Name = "Topline"
If DE = False Then ActiveSheet.Name = "Data"

For i = 1 To Worksheets.Count
If Worksheets(i).Name = "Topline" Then Set Topline = Worksheets(i)
If Worksheets(i).Name = "Data" Then Set Data = Worksheets(i)
Next i

With Topline
.Range(Cells(1, 1), Cells(7, 3)).Interior.Color = RGB(100, 100, 100)
With .Range(Cells(3, 1), Cells(3, 3))
.Merge
.Font.Bold = True
.Value = "Total"
End With
With .Range(Cells(4, 2), Cells(5, 3))
.Font.Bold = True
End With
.Cells(1, 1) = "Topline"
.Cells(1, 1).Font.Bold = True
.Cells(4, 2) = "Count"
.Cells(4, 3) = "Percent"
End With

Data.Range(Cells(x + 2, 1), Cells(x + a, 3)).Copy
Topline.Range(Cells(8, 1), Cells(a + 6, 3)).PasteSpecial (xlPasteAll)

最佳答案

问题是您有不合格的 Range 引用。当您在没有首先指定工作表的情况下引用任何 Range 对象时,它是不合格的。这些引用遵循幕后规则,并使用带有下划线的对象。因此,您可能会收到有关 _Worksheets 的错误。或 _Global .

工作表的类模块中的非限定引用将引用该工作表。所有其他不合格的引用(ThisWorkbook、标准模块、用户表单)都将引用 Activesheet。这个

With Topline
.Range(Cells(1, 1), Cells(7, 3)).Interior.Color = RGB(100, 100, 100)
End With

就像说
Topline.Range(Activesheet.Cells(1, 1), Activesheet.Cells(7, 3)).Interior.Color = RGB(100, 100, 100)

由于 Topline 上没有包含 Activesheet 中的单元格的范围,因此您会收到错误消息。

当工作表已经存在时,为什么会发生这种情况?可能是因为在对代码进行故障排除时,您访问了 UI,创建了工作表,然后返回代码运行它。您让新创建的 Topline 工作表处于事件状态,并且当 Topline 和 Activesheet 相同时,没有错误。

关于VBA 不能引用在代码之前存在的工作表中的范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43241058/

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