【发布时间】:2018-02-01 18:07:11
【问题描述】:
我有一个代码,该代码大部分都可以工作,我在工作簿 1 中使用工作簿 1 中的列表中的名称创建了大量新工作表。然后它从工作簿中的另一个工作表复制单元格并将工作表名称放在单元格 D1 中.这按预期工作。
然后我想在另一个工作簿中查找新工作表名称并复制一些与其行号相关的单元格。我的代码打开工作簿 2(设置为 wbtemps),但它似乎没有转到工作簿 2 中的指定工作表并找到单元格。我尝试将代码分成多个部分,如果我事先选择工作表,它会找到单元格,但它似乎仍然没有复制我想要的单元格......
任何帮助将不胜感激。我显然在某个地方错过了一些东西......
Set wb = ActiveWorkbook
InpFolder = ThisWorkbook.Path & "\Matrix_Inputs\"
MyValue1 = InputBox("WP1 Draft Matrix Filename", "Input", "Filename")
For Each cell In wsWithSheetNames.Range(Range("B5"), Range("B5").End(xlDown))
With wb
.Sheets.Add after:=.Sheets(.Sheets.Count)
On Error Resume Next
ActiveSheet.Name = RemoveSpecialCharactersAndTruncate(cell.Value)
Sheets("Template").Cells.Copy ActiveSheet.Range("A1")
ActiveSheet.Range("D1").Value = cell.Value
Application.ScreenUpdating = False
Set wbtemp = Workbooks.Open(InpFolder & MyValue1 & ".xls*", True, True) 'The code works up to here
Set n = wbtemp.Sheets("2_Matrix Likely Pressures").Range("B1").EntireColumn.Find(cell.Value)
wbtemp.Sheets("2_Matrix Likely Pressures").Range(.Range("E" & n.Row), .Range("E", n.Row).End(xlToRight)).Copy
wb.ActiveSheet.Range("B21").PasteSpecial Transpose:=True
wbtemp.Close False
Set wbtemp = Nothing
Application.ScreenUpdating = True
If Err.Number = 1004 Then
Debug.Print cell.Value & " already used as a sheet name"
End If
On Error GoTo 0
End With
Next cell
【问题讨论】:
-
行
wbtemps.Sheets("2_Matrix Likely ...在With wb语句的范围内有“锚点”。我认为您需要添加With Worksheets("WhateverSheet")...否则.Range("E" & n.Row)将引用活动表... -
我试过了,但还是不行。最后,我必须同时选择工作表和其中一个单元格,然后才能找到并复制正确的范围(这很烦人,因为我不应该以这种方式选择东西)。我会发布代码。