gpt4 book ai didi

vba - ActiveWorksheet 不是源工作表时出现意外错误

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

我有一个带有列标题(在第 1 行)的工作表,每个标题下都有一个 1 到 255 个值的数组。我有为每个标题创建一个新工作表并粘贴值(从第 2 行到第 n 行,每个标题不同)并将工作表重命名为标题标题的代码。假设标题标题是有效的工作表名称。

当我的 ActiveSheet 时,下面的代码可以正常工作是 Data工作表。

但是,当我使用不同的 ActiveSheet 运行代码时(在同一个工作簿中)我收到此错误:
Run-time error 1004:
Method Range’ of object ‘_Worksheet failed

调试器告诉我错误发生在 Set src = ws.Range(Cells(2, i), Cells(lastRow, i)) 行。 .为什么会出现这个错误?

Sub MakeNewWorksheets()

Dim wb As Workbook
Dim ws As Worksheet
Dim target As Worksheet
Dim i As Long
Dim s As String

Set wb = ThisWorkbook
Set ws = wb.Worksheets("Data")

For i = 1 To ws.UsedRange.Columns.Count
s = ws.Cells(1, i)
If Not SheetExists(s, wb) Then
Set target = wb.Sheets.Add(, wb.Worksheets(wb.Worksheets.Count))
target.Name = s
Else
Set target = wb.Worksheets(s)
End If

' Find data from front sheet
Dim src As Range
Dim lastRow As Long
lastRow = Cells(Rows.Count, i).End(xlUp).Row

Set src = ws.Range(Cells(2, i), Cells(lastRow, i))
'Debug.Print src.Address

' Set values in target sheet
target.Range("A1:A256").Value = src.Value
Next i

End Sub

最佳答案

发生此错误是因为 Cells(2,1)Cells(lastRow, i)没有专门链接到代码中的工作表,因此链接到 ActiveSheet。您给出的命令应该在工作表 ws 上创建一个范围工作表上有单元格ActiveSheet .这是不可能的。

将其更改为(在 ws. 前面添加 Cells(..) :

Set src = ws.Range(ws.Cells(2, i), ws.Cells(lastRow, i))

关于vba - ActiveWorksheet 不是源工作表时出现意外错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16317227/

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