【问题标题】:How to refer to a sheet within a workbook without using index number ie position of sheet in workbook?如何在不使用索引号的情况下引用工作簿中的工作表,即工作簿中工作表的位置?
【发布时间】:2020-05-25 03:11:05
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: excel vba


    【解决方案1】:

    不确定我是否完全理解,但我认为您可以将括号内的 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
    

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

    【讨论】:

    • 我明白了!!谢谢
    猜你喜欢
    • 2013-08-16
    • 2018-03-22
    • 1970-01-01
    • 2013-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多