【发布时间】:2013-03-18 09:04:57
【问题描述】:
一些上下文: - 我正在建造一张大桌子(1000x1000) - 我想用值 1 填充一些情况 - 我将每个案例的行和列放在单独的工作表中
这是我用来填写表格的代码。如您所见,我在 For 循环中使用 Range。它以前使用较小的数据集。造成麻烦的线路是这一行: Sheets("Feuil1.csv").Cells(rng.Value, rng.Offset(, 1).Value) = "1"
Sub FillEdges()
Dim rng As Range
For Each rng In Sheets("Feuil2").Range("A1:A53498")
Sheets("Feuil1.csv").Cells(rng.Value, rng.Offset(, 1).Value) = "1"
Next rng
End Sub
做一些研究后,我了解到我可能想偶尔保存、关闭并重新打开工作簿。我试过了,但似乎 VBA 没有考虑“保存、关闭和重新打开”代码。我试图通过这个帮助页面找出一些东西:
http://support.microsoft.com/kb/210684/en-us
这导致我使用此代码出现错误 91。错误在第三行。
Sub FillEdges()
Dim rng As Range, mybook As Workbook
mybook.SaveAs "Macintosh HD:Users:Nicolas:test.xslm", FileFormat:=53
For Each rng In Sheets("Feuil2").Range("A1:A53498")
If rng Mod 2500 = 0 Then
mybook.Close SaveChanges:=True
Set mybook = Nothing
Set mybook = Application.Workbooks.Open("Macintosh HD:Users:Nicolas:test.xslm")
End If
Sheets("Feuil1.csv").Cells(rng.Value, rng.Offset(, 1).Value) = "1"
Next rng
End Sub
你知道如何解决这个错误 91 吗?
所以我不确定这是否会完全修复错误 1004,但我认为这是正确的路径。或者,也许您会提出其他建议...?
非常感谢您的宝贵时间。 祝你有美好的一天。 尼古拉斯。
【问题讨论】:
-
offset(0,1) - 你缺少 0。你必须像这样设置 mybook:Set mybook = Application.Workbooks.Add
-
谢谢我。这可能是正确的方式。不幸的是,我不明白 Set 函数在这里的用途。它打开了一个新的工作簿,我不确定我将如何访问工作表“Feuil2”了。它导致我犯了一个不同的错误。运行时错误:-2147352565 (8002000b)。我目前正在研究这个。
-
您必须为两者创建参考。例如:将工作表 1 调暗为工作表,设置工作表 1 = ThisWorkbook.ActiveWorksheet。我认为您需要停止编码并学习 VBA 基础知识...抱歉,但您似乎对 vba 的知识水平不够,并且您正在尝试做超出您能力范围的事情。
-
嗯,这可能是真的:D。我相信你同意我无法扩展我以前拥有的宏是一种耻辱。我会努力的。很快就和你谈谈;)
-
是的,如果您了解一些基础知识,它不会太复杂。继续阅读有关通过 vba 在 excel 中打开、关闭和保存工作簿的信息。这似乎是一个有用的指南zerrtech.com/content/…