【自己理解】sheet1是一个专有名词,不是任何对象的属性,只能单独使用,特指代码所在工作簿的那个sheet1(和顺序无关,是固定的一个表,sheets(1)则和顺序有关)。
参考资料:
1.代码中一旦使用工作表的代码名称,如:Debug.Print Sheet1.Cells(1),那么代码句中的Sheet1始终代表代码句所在的工作簿中的那个Sheet1;
2.如上述第1点所述,ThisWorkbook.Sheet1或就楼主代码中的Wb.Sheet1的写法是不成立的!再次指出:工作表代码名称Sheet1的写法其前面不应该存在父对象;
3.回到楼主本代码,正如第1点所述,你要想引用打开的Wb这一工作簿中的代码名称为Sheet1的工作表,那么,遗憾地告诉你,想直接使用代码名称Sheet1的写法是痴人说梦,即你只能用类似Wb.Worksheets("什么什么工作表名称")这样的写法!!!
若想对用代码打开的Wb工作簿中的代码名为Sheet1的工作表进行操作,参考如下代码:
Sub sheetname()
Dim sht As Object, theStr$, i&
For i = 1 To ThisWorkbook.Sheets.Count
For Each sht In ThisWorkbook.Sheets
theStr = sht.CodeName
If Replace(theStr, "Sheet", "") = i Then
sht.Name = Sheet1.Range("a" & i + 1)
Exit For
End If
Next sht
Next i
End Sub