【发布时间】:2020-07-22 14:38:52
【问题描述】:
非常新的 excel vba,只是想问一下为什么我在 With wb.Sheets("i") 行上遇到运行时错误。它应该如何工作是它应该打开文件并将所有 6 个工作表复制到指定的工作簿中。 with 函数试图获取和复制第一个工作表的标题,而不是复制下一个工作表的标题。
Sub Button1_Click()
Dim i As Long
Dim lcurrow As Long
Dim lrow As Long
Dim wb As Workbook
Dim ws As Worksheet
Set wb = Workbooks.Open("/Users/Documents/2020-06-22.xlsx")
For i = 1 To 6 Step 1
With wb.Sheets(i)
If i = 1 Then
lrow = 1
Else
lrow = 2
End If
Do Until .Range("A" & lrow).Value = vbNullString
lcurrow = lcurrow + 1
For n = 0 To 3 Step 1
wb.Sheets(i).Range("A" & lcurrow).Offset(columnoffset:=n).Value = .Range("A" & lrow).Offset(columnoffset:=n).Value
Next n
lrow = lrow + 1
Loop
End With
Next i
Set wb = Nothing
End Sub
【问题讨论】:
-
你应该写
With wb.Sheets(i)(不带双引号)来进行索引访问。请查看变量的基本语法。 -
您使用双引号将 i 作为字符串文字......也就是说......它试图引用名为“i”的工作表:。试试 Sheets(i) ... 没有双引号。
-
使用 wb.Sheets(i) 仍然给出相同的错误
-
那么你得到的运行时错误到底是什么?您能否确认正在打开的工作簿中有(至少)6 个工作表?
-
抱歉,我的错误是对象变量或未设置块变量 - 错误 91。为了确认,我试图让宏抓取前 6 个工作表(8 个中的)并提取它到一个新的工作簿。
标签: excel vba runtime-error