【问题标题】:Select worksheet with name with specific characters选择具有特定字符名称的工作表
【发布时间】:2020-03-11 19:14:04
【问题描述】:

我有一个包含几张工作表的工作簿。在这种情况下,我不能使用 Index 而不是 Select,因为我选择的工作表的位置可能会参考其他工作表而改变。这是一个例子

我的工作簿中的工作表:最终报告、Alpha_A、Beta

我需要用“Alpha_A”表中的最后一个字符(在本例中为“A”)填充“最终报告”的 B 列。在那种情况下,我目前正在使用

 Sheets("Alpha_A").Select
 Range("B3:B5000").Value = Right(ActiveSheet.Name, 1) 

但是,这是在几个不同的工作簿中完成的,每个工作簿都有最终报告和 Beta 表,但 Alpha 表的名称末尾可能有不同的字符(例如 Alpha_A、Alpha_B、Alpha_C 等。 .).

我正在寻找一个代码来选择工作簿中包含单词“Alpha”的工作表,这样当 Alpha 工作表的最后一个字符发生更改时,我就没有更改代码。感谢您的帮助!

【问题讨论】:

标签: excel vba


【解决方案1】:

如果下划线后面只有1个字母,那么:

Sub luxation()
    Dim s As Worksheet
    For Each s In ThisWorkbook.Sheets
        If Left(Right(s.Name, 7), Len(s.Name) - 1) = "Alpha_" Then
            Sheets("Final Report").Range("B3:B5000").Value = Right(s.Name, 1)
        End If
    Next s
End Sub

(注意:Select 不是必需的)
(如果下划线后面可能有超过 1 个字母,则需要稍加修改必填)

【讨论】:

  • 工作簿中是否有名称类似于Alpha_A的工作表???
  • 是的,我将它应用到了我在文章中提到的工作簿
【解决方案2】:

基于Gary的Student代码,据我了解,可能是~:

Sub test()
    Dim s As Worksheet
    For Each s In ThisWorkbook.Sheets
        If InStr(s.Name, "Alpha_") Then
            s.Range("B3:B5000").Value = Right(s.Name, 1):exit sub
        End If
    Next s
End Sub

【讨论】:

  • 这比我的好多了(+1)
  • 嗨@Gary'sStudent,这很有趣
  • 嗨@Nima,它会起作用,但可能我们只是不明白你的意思 =))
  • 看来它肯定可以工作。我确实将 s.Range("B3:B5000").Value 更改为 Sheets("Final Report").Range("B3:B5000").Value,因为我需要参考最终报告表。对吗?
  • 老实说,Exit Sub 真的应该换个新线了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多