首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >查找工作表名称的一部分

查找工作表名称的一部分
EN

Stack Overflow用户
提问于 2016-06-17 13:23:14
回答 5查看 2K关注 0票数 2

我想更新一个工作表。工作表的名称随日期更改。

举个例子,工作表应该被命名为

星期一“你好,世界6.13” “你好,世界6.17”今天

如何查找以"Hello“开头而忽略日期代码的工作表名称

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2016-06-17 13:33:37

我要做的就是循环遍历活动工作簿中的工作表并进行比较,当找到正确的工作表"Hello x.xx“时,将其设置为引用,并使用此引用运行任何进一步的代码。

代码语言:javascript
运行
复制
Let searchTerm = "Hello World"

For Each ws In ActiveWorkbook.Sheets
    If Left(ws.Name, Len(searchTerm)) = searchTerm Then
        Set hwSheet = ws
        Exit For
    End If
Next ws

'do some code eg:
With hwSheet
    .Range("A1").Value = "Hi"
End With
票数 2
EN

Stack Overflow用户

发布于 2016-06-17 14:14:51

所以,您想要捕获的电子表格总是相同的工作表,在同一个工作簿中?如果我做对了,您可以在客户端的工作簿中使用工作表的代码名,比如Sheet1,而不是工作表名称。

代码语言:javascript
运行
复制
Dim wb As Workbook, ws as Worksheet
Set wb = Workbooks("Client.xls")
wb.Activate
Set ws = Sheet1

在使用工作表代码之前,您必须激活适当的工作簿。要确定这是可行的,谨慎的做法是将客户端的工作表代号更改为唯一的(如果它还没有),如果这是您的权限范围内的话。

票数 0
EN

Stack Overflow用户

发布于 2016-06-19 04:55:17

下面发布的是Oliver代码的一个版本,它处理循环中找到的工作表,而不是最后找到的匹配。

其他一些小的调整

  • Left$的字符串版本比变体Left更快。
  • 如果在循环中设置了一个对象,那么在重新测试之前,应该将它设置为空(在下面的代码中,这一点在我使用现有的ws时并不明显)

代码

代码语言:javascript
运行
复制
Sub Updated()
Dim ws As Worksheet
For Each ws In ActiveWorkbook.Sheets
    If Left$(ws.Name, 11) = "Hello World" Then
        With ws
    'do something
        End With
    End If
Next ws
End Sub

返回所有不带循环的部分工作表匹配的另一个选项在Adding Sheet Names to Array in Excel VBA中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37882735

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档