我对VBA很新,想知道是否有人可以帮助我 .
我在工作簿中有2个不同的工作表 .
Sheet(Raw Data) 的成本中心范围为 NameS
(单元格BC3为空)
我必须复制 Sheet(CC Template) 并将其命名为 Sheet(Raw Data).Range(BC3).Value
的右5个字符,并将 Cell(2,2).value
更改为 Sheet(Raw Data).Range(BC3).Value
...
然后我希望它转到 Sheet(Raw Data)
... BC4中的下一个单元格并创建第二个工作表并相应地更改名称和单元格(2,2),直到 Sheet(Raw Data)
中的列表结束 .
这是我的代码 . 它创建了第一个工作表,但随后我在Sheets(“原始数据”)获得运行时错误'1004' . 范围(“BC3”) . 在do until循环中选择 . 如果可能的话,我想从代码中删除X和CCName变量 .
Sub CreateCCTabsinNewPlantFile2()
Dim i As Integer
Dim x As Integer
Dim CCName As String
i = ActiveWorkbook.Worksheets.Count
x = 1
' Select cell BC3, *first line of data*.
Sheets("Raw Data").Range("BC3").Select
' Set Do loop to stop when an empty cell is reached.
Do Until IsEmpty(ActiveCell)
CCName = ActiveCell.Value
' Code to make worksheets
Worksheets("CC Template").Copy after:=Worksheets(i)
ActiveSheet.Name = Right(CCName, 5)
ActiveSheet.Cells(2, 2).Value = CCName
' Step down 1 row from present location.
Sheets("Raw Data").Range("BC3").Select
ActiveCell.Offset(x, 0).Select
x = x + 1
Loop
End Sub
2 回答
希望这可以帮助 .
您会收到error1004,因为您只能在Active Sheet中使用
Range.Select
. 如果要在不同的工作表中选择范围,首先必须使用Sheets("Whatever").Activate
激活该工作表 .此外,我更新了您的代码,以便您可以从任何工作表执行它 . 您的代码强制用户将Sheets(“原始数据”)作为ActiveSheet .
尽量不要使用太多选择是否可以避免 . 而且,尝试习惯
Thisworkbook
而不是ActiveWorkbook
. 如果你总是在同一个工作簿中工作,不是问题,但如果你的宏运行多个工作簿,你需要区别何时使用每个工作簿 .试试这个代码