gpt4 book ai didi

vba - Excel VBA 格式化关闭的工作表错误 1004 "Application Defined or Object Defined Error"

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

我已经写了一大堆 VBA 代码,不幸的是其中最简单的部分不起作用。我只需要打开一个特定的工作簿(名称不会改变)并在其中绘制边框。我的 Sub 写入它工作正常,但是一旦我尝试绘制任何边框,它就会在 VBA 代码关联的工作表中绘制它们,而不是它打开的那个。下面的代码是我尝试修复它(为方便起见,我已将其移至其自己的 Sub),但错误 1004 出现在 ActiveSheet.Range(rRng).BorderAround xlContinuous
我不怀疑这是显而易见的事情,但我终生无法看到它在哪里。例如。 xl0.ActiveSheet.Range(rangeAA) = CardDataInputMode这在我创建的 WriteToSheet Sub 中对我来说绝对没问题,但添加下一行:ActiveSheet.Range(rRng).BorderAround xlContinuous不管用。出于好奇,我添加了 xl0.ActiveSheet.Range("A:AS").Columns.AutoFit到 Write Sub,它的 AutoFit 也很好。我在绕圈子!

这是整个Sub,还有什么需要的请告诉我!非常感谢。

Sub OutlineCells()
Dim xl0 As New Excel.Application
Dim xlw As New Excel.Workbook
Dim rRng As Range
Dim row As Range
Dim cell As Range

Set xlw = xl0.Workbooks.Open(Application.ThisWorkbook.Path & "\Outputs\MasterCardTestCaseTemplate.xlsx")
xlw.Worksheets("Sheet1").Activate

Set rRng = Sheet1.Range("A1:AS25")

'Clear existing
'rRng.Borders.LineStyle = xlNone

For Each row In rRng.Rows
For Each cell In row.Cells
'Apply new borders
xlw.ActiveSheet.Range(rRng).BorderAround xlContinuous ' <--- ERROR HERE
xlw.ActiveSheet.Range(rRng).Borders(xlInsideHorizontal).LineStyle = xlContinuous
xlw.ActiveSheet.Range(rRng).Borders(xlInsideVertical).LineStyle = xlContinuous
Next cell
Next row

xlw.Save
xlw.Close

Set xl0 = Nothing
Set xlw = Nothing

End Sub

最佳答案

你错误地使用了你的范围对象——你把它放在括号中,这会导致评估,因为范围对象的默认属性是它的 .Value ,这一行:

xl0.ActiveSheet.Range(rRng).BorderAround xlContinuous

本质上是这样的:
xl0.ActiveSheet.Range(rRng.Value).BorderAround xlContinuous

这只会在 rRng 时不会引发错误。表示单个单元格,该单元格的 .Value是一个有效的地址字符串。

现在,您可以这样做来强制 .Address属性(property):
xl0.ActiveSheet.Range(rRng.Address).BorderAround xlContinuous

但最好有资格 rRng成为 xlW 的一部分工作簿。 更改此 使其符合 xlw工作簿:
Set rRng = xlw.ActiveSheet.Range("A1:AS25")

然后您可以直接使用该范围:
For Each row In rRng.Rows
For Each cell In row.Cells
'Apply new borders
rRng.BorderAround xlContinuous ' <--- ERROR HERE
rRng.Borders(xlInsideHorizontal).LineStyle = xlContinuous
rRng.Borders(xlInsideVertical).LineStyle = xlContinuous
Next cell
Next row

现在我看了一下,你根本不需要那个嵌套循环,只需省略两个 For Each循环,我认为这应该会产生相同的结果:
'## DELETE THIS For Each row In rRng.Rows   
'## DELETE THIS For Each cell In row.Cells
'Apply new borders
rRng.BorderAround xlContinuous ' <--- ERROR HERE
rRng.Borders(xlInsideHorizontal).LineStyle = xlContinuous
rRng.Borders(xlInsideVertical).LineStyle = xlContinuous
'## DELETE THIS Next cell
'## DELETE THIS Next row

关于vba - Excel VBA 格式化关闭的工作表错误 1004 "Application Defined or Object Defined Error",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25287264/

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