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



我正在尝试在每天从网络下载的工作簿上执行宏。

它只有一个工作表,可以随着下载日期相应地更改名称(例如:" Vendas 201709294524455")。

我需要将此工作表设置为变量。我该如何使用此动态名称更改?

我尝试了:

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
'...rest of the code

,因为它只有一个工作表:

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

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

这将把SH1设置为工作簿中的第一个工作表,无论名称如何。

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

如果有多个诸如"测试"(在此示例中)之类的纸,您将获得第一个。

最新更新