我读过的所有内容都表明我正确地表示了我的变量并调用了我要激活的工作表。最后一行是我得到类型不匹配的地方。那时CPIDws = CERN000006。我在某处读到,这个名字是字母和数字可能会有问题,但是没有找到解决方法。
Sub Create_tab()
Dim newWS As Worksheet, CernWS As Worksheet, CPID As Variant
Dim Template As Worksheet, CPIDclm As Long, CERNdata As Range, CPIDcheck As Variant
Dim lngRow As Long, lngCol As Long, i As Integer, CPIDws As Worksheet
Set Template = Sheets("Template")
Set CernWS = Sheets("CERN ID's")
'Set lngRow = 1
'Set lngCol = 1
CernWS.Activate
Cells(1, 1).Select
Do
ActiveCell.Offset(1, 0).Select
Set CPID = ActiveCell
'create a new sheet as a copy of the template
Sheets("Template").Copy _
after:=ActiveWorkbook.Sheets(ThisWorkbook.Sheets.Count)
'Name the new sheet as the current CPID value from CERN ID's worksheet
ActiveSheet.Name = CPID
Set CPIDws = ActiveSheet
'interigate AAA Data and update the new sheet with the data specific to the current cpid
Sheets("AAA Data").Activate
Cells(2, 3).Activate
Set CPIDcheck = ActiveCell
Do
If CPID = CPIDcheck Then
ActiveCell.Offset(0, -2).Select
Set CERNdata = Range(Selection, Selection.End(xlToRight))
End If
Sheets(CPIDws).Activate
答案 0 :(得分:5)
此时CPIDws = CERN000006。
不,不。 :)
您已声明CPIDws As Worksheet
,但您将其用作Sheets
方法的参数,该方法采用索引(整数)或名称(字符串)值。
因此,类型不匹配。
只需尝试CPIDws.Activate
或者,可以说你可以做多余的事:Sheets(CPIDws.Name).Activate
THIS也可能会有所帮助,因为通常建议不要依赖Active
(单元格,工作表等)或Selection
何时可以避免(这几乎是总是如此,除了使用Selection
作为输入方法的某些实例。但通常,您的宏可能永远不需要选择或激活除了用户选择输入的任何单元格之外的任何单元格。在您的情况下,由于您从Cells(1,1)
开始并完全通过代码控制迭代,因此Select
或{{根本不需要1}}任何东西。