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

我试图执行一个工作簿,每天从网上下载的macros,它只有一个worhsheet相应地改变名称下载date(说:“vendas 201709294524455”),我需要将此工作表设置为一个variables,但是我怎么能用这个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 

剩下的代码

但是没有工作…任何想法?

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

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

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

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

斯科特·克莱纳的解决scheme是完美的。 但是对于将来的任何人来说 – 如果你想避免使用工作表索引(如果你改变工作表的顺序就会改变的话)就是这样做的。 如果您有多个工作表,只有值得使用这种方法。

 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 

如果有多个工作表像“testing”(在这个例子中),你会得到第一个。