如何在不使用索引号(即工作表在工作簿中的位置)的情况下引用工作簿中的工作表?



>我有一个带有工作表的Excel工作簿:">Excel1">"Hello1"。"Excel1"中的宏按钮从"Hello1">中获取值。

当我制作工作表的多个副本时,工作表"Excel1(k("必须从"Hello1(k("中获取值,类似于">Hello1">中的"Excel1"。[k-假设的任何随机数]。我写了一个使用索引号引用工作表的代码,但问题是每当我移动工作表的位置时,宏都无法按预期工作。

那么,无论工作表位置(索引(的位置如何,我如何引用工作表?

Sub value()
Dim shcount As Integer
Dim horzn As Integer
Dim i As Integer
i = ActiveSheet.Index / 2
With Sheets("Hello1 (" & i & ")")
horzn = .Range("A5")
Sheets("Excel1 (" & i & ")").Cells(3, 3).value = horzn
End With
End Sub

不确定我是否完全理解,但我认为您可以将括号内的 Excel1(k( 名称部分("后缀"(与 Hello1 名称中的同一部分相匹配。这是想法(未经测试但编译(:

Sub value()
Dim ws As Excel.Worksheet
Dim wsExcel1 As Excel.Worksheet
Dim wsHello1 As Excel.Worksheet
Dim Suffix As String
For Each ws In ThisWorkbook.Worksheets
If Left(wsExcel1.Name, 6) = "Excel1" Then
Set wsExcel1 = ws
Suffix = Replace(wsExcel1.Name, "Excel1", "")
Set wsHello1 = ThisWorkbook.Worksheets("Hello1" & Suffix)
wsExcel1.Range("C3").value = wsHello1.Range("A5").value
End If
Next
End Sub

请注意,也许您不必遍历所有工作表。如果您假设活动表是 Excel1 工作表,那么只需Set Excel1 = ActiveSheet并摆脱循环。