【发布时间】:2020-07-30 04:03:28
【问题描述】:
我有一本大约 40 张的工作簿。我在 sheet1 上的表格中工作,正在编译整个工作簿中的数据。
A 列中的每个单元格值在工作簿中的某处都有对应的同名工作表。
我正在尝试遍历列并为每个单元格 1) 找到相应的工作表 2) 复制单个单元格值 3) 将该值粘贴回原始表格的右侧。
我目前的尝试如下。我不断收到(错误 91)未设置对象变量。任何调试技巧或一般建议将不胜感激!
Sub LoopColumn()
Dim cell As Range
Dim ws As Worksheet
Dim ws_num As Integer
Dim CellName As String
Dim CellLocation As Range
ws_num = ThisWorkbook.Worksheets.Count
Worksheets(1).Select
For Each cell In Range("A:A")
CellName = ActiveCell.Value
CellLocation = ActiveCell.Address
For i = 1 To ws_num
If ws.Name = CellName Then
ThisWorkbook.Worksheets(i).Activate
ActiveSheet.Range("L1").Select
Selection.Copy
ActiveSheet.Paste Destination:=Worksheets(1).Range(CellLocation.Offset(0, 4))
End If
Next i
Worksheets(1).Select
Next cell
End Sub
【问题讨论】:
-
If ws.Name = CellName Then- 你永远不会Set ws。 -
你真的应该 find the last row 而不是循环遍历 A 列中的每个单元格。
-
您真的要遍历 A 列中的
1048576单元格吗? -
您正在获取(错误 91)未设置对象变量。因为您已声明 ws 对象
Dim ws as worksheet但尚未将其设置为任何工作表。