我正在尝试在每天从网络下载的工作簿上执行宏。
它只有一个工作表,可以随着下载日期相应地更改名称(例如:" 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
如果有多个诸如"测试"(在此示例中)之类的纸,您将获得第一个。