【问题标题】:Update excel VBA to choose range for renaming tabs in workbook更新 excel VBA 以选择在工作簿中重命名选项卡的范围
【发布时间】:2018-09-21 02:31:48
【问题描述】:

当前:我的代码可以根据 D2:D5 范围内的单元格值更新 4 个选项卡(Sheet6、Sheet7、Sheet8、Sheet10)名称。此范围填充了公式,这些公式可能会导致空白,并且位于名为“计算”的选项卡上。每个单元格都与一个特定的选项卡相关联:

D2 -> Sheet6。如果单元格 D2 为空白或 0,则隐藏选项卡。如果不为空,请在单元格 D2 中使用文本命名 Sheet6。 D3 -> Sheet7。如果单元格 D3 为空白或 0,则隐藏选项卡。如果不为空,请在单元格 D3 中使用文本命名 Sheet7。 D4 -> 表 8。如果单元格 D4 为空白或 0,则隐藏选项卡。如果不为空,请在单元格 D4 中使用文本命名 Sheet8。 D5 -> 表 10。如果单元格 D5 为空白或 0,则隐藏选项卡。如果不为空,请在单元格 D5 中使用文本命名 Sheet10。

  Sub RenameShts()
   Dim Ws As Worksheet
   Dim i As Long
   Dim Nme As String

   i = 2
   For Each Ws In Sheets(Array(Sheet6.Name, Sheet7.Name, Sheet8.Name, Sheet10.Name))
      Nme = Sheets("Calculations").Range("D" & i).Value
      If Nme = "" Or Nme = "0" Or Nme = "0 0" Then
         Ws.Visible = xlSheetHidden
      Else
         Ws.Name = Nme
      End If
      i = i + 1
   Next Ws
End Sub

所需代码:更新当前代码以查看“计算”选项卡上的单元格 E1,以确定用于命名 4 个选项卡(Sheet6、Sheet7、Sheet8、Sheet10)的范围。如果单元格 E1 = False,则使用范围 D2:D5 来命名选项卡。如果单元格 E1 = True,则使用范围 F2:F5 来命名选项卡。我希望应用相同的逻辑,如果正在使用的范围内的任何单元格为空白或 0,则完全隐藏选项卡。

【问题讨论】:

标签: vba excel


【解决方案1】:

除非我遗漏了什么,否则您似乎已经假设您的代码有效。

Option Explicit

Sub RenameShts()
   Dim Ws As Worksheet
   Dim i As Long
   Dim Nme As String

    Dim columnLetter as string

    If Worksheets("Calculations").range("E1").value2 then columnLetter = "D" else columnLetter = "F"

   i = 2
   For Each Ws In Sheets(Array(Sheet6.Name, Sheet7.Name, Sheet8.Name, Sheet10.Name))
      Nme = Sheets("Calculations").Range(columnLetter & i).Value
      If Nme = "" Or Nme = "0" Or Nme = "0 0" Then
         Ws.Visible = xlSheetHidden
      Else
         Ws.Name = Nme
      End If
      i = i + 1
   Next Ws
End Sub

未经测试,在移动设备上编写。

【讨论】:

  • 此外,通常最好在代码中按名称明确引用工作簿,否则代码将引用执行时处于活动状态的任何工作簿。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-29
  • 1970-01-01
  • 1970-01-01
  • 2013-08-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多