选择具有非特定名称VBA的工作表

时间:2017-09-29 15:30:29

标签: excel vba excel-vba

我正在尝试在每天从网上下载的工作簿上执行一个宏,它只有一个随着下载日期相应更改名称的工作表(例如:“vendas 201709294524455”),我需要将此工作表设置为一个变量,但我怎么能用这个dinamyc名称改变呢?

我试过了:

Dim Sh1           As Worksheet
Dim Sh2           As Worksheet
Dim FindCell      As Range

Set Sh2 = ThisWorkbook.Worksheets("book1")
Set Sh1 = Workbooks("vendas.xlsm").Worksheets("*vendas*")

LastRow = Sh2.Range("d65536").End(xlUp).Row

......其余代码

但是没有用......有什么想法吗?

2 个答案:

答案 0 :(得分:5)

因为它只有一个工作表才能使用:

Set Sh1 = Workbooks("vendas.xlsm").Worksheets(1)

Worksheets()允许索引或字符串名称。只有一张纸,索引始终是该纸张的1。请参阅:https://msdn.microsoft.com/en-us/vba/excel-vba/articles/worksheet-object-excel

这会将Sh1设置为工作簿中的第一个工作表而不管名称。

答案 1 :(得分:1)

Scott Craner的解决方案非常适合您。但是对于将来的任何人来说 - 如果你想避免使用工作表索引(如果你改变工作表的顺序会改变),你就会这样做。如果您有多个工作表,则唯一值得使用此方法。

Sub SetWorksheet()
    Dim ws As Worksheet, targetWorksheet As Worksheet

    For Each ws In ThisWorkbook.Worksheets
        If ws.Name Like "*test*" Then
            Set targetWorksheet = ws
            Exit For
        End If
    Next ws

    'use targetWorksheet
    MsgBox targetWorksheet.Name
End Sub

如果有多张表格,例如" test" (在这个例子中),你将获得第一个。