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”(在这个例子中),你会得到第一个。