【发布时间】:2018-03-21 20:33:44
【问题描述】:
我正处于 vba 的学习阶段。我试图将一个值存储在一个变量中,但不能使用 Cell 和 Range,它会引发 1004 错误
下面是我的代码
Sub myself()
Dim str As String
Dim rock As String
Dim MaxStrLen As Integer
Dim StrLen As String
Dim LastRow As Long
Dim LastCol As Long
Dim ws1 As Worksheet
Dim ws2 As Worksheet
Dim i As Integer
Dim j As Integer
Dim FilePath As String
Set ws1 = Sheets("Sheet1")
Set ws2 = Sheets("Sheet2")
LastRow = Cells(Rows.Count, 1).End(xlUp).Row
LastCol = Cells(1, Columns.Count).End(xlToLeft).Column
Open "C:\Users\Antony\Desktop\test.txt" For Output As #2
ws1.Activate
With ws1
For i = 0 To LastRow
For j = 0 To LastCol
.Range(.Cells(i, j)).Value = str
Next j
Next i
Print #2, str
End With
Close #2
End Sub
突出显示的行是 1004 错误。请帮助解决并存储在记事本中的变量中。
提前致谢!
【问题讨论】:
-
Range 需要两个单元格,一个开始和一个结束。只需使用
.Cells(i, j).Value = str -
我认为他想要存储在变量
str中的单元格的值,因此需要翻转该赋值的两侧:str = .Cells(i, j).Value -
要在循环中单独输出每个单元格值,请在内部
For j循环中移动Print行,否则您只会打印出最后一个值。 -
str = .Cells(i, j).Value 也试过这条线,仍然抛出错误 1004
-
@AntonyPPeter 问题是您的 For 循环从 0 开始。没有第 0 行,也没有第 0 列,这就是导致您的错误的原因。将循环更改为从 1 开始。
标签: vba excel excel-formula