【发布时间】:2013-03-28 13:40:15
【问题描述】:
我的 Excel 工作簿中可能有名为 Data1、Data2、... 我想知道我的工作簿中有多少这样的表格。
我试图比较工作表名称并保持计数。但它不能正常工作。
所以希望有人可以在这里帮助我。提前致谢。
【问题讨论】:
我的 Excel 工作簿中可能有名为 Data1、Data2、... 我想知道我的工作簿中有多少这样的表格。
我试图比较工作表名称并保持计数。但它不能正常工作。
所以希望有人可以在这里帮助我。提前致谢。
【问题讨论】:
试试这个
msgbox thisworkbook.sheets.count
这将返回工作簿中工作表的数量。
要返回名称如“数据”的工作表数量,请执行以下操作:
Dim iCountSheets As Integer
Dim oSheet As Worksheet
'
For Each oSheet In Sheets
If oSheet.Name Like "Data*" Then
iCountSheets = iCountSheets + 1
End If
Next
MsgBox iCountSheets & " sheets like data"
另一种方法是按索引遍历工作表集合:
Dim iCountSheets As Integer, iIdx As Integer
Dim oSheet As Worksheet
'
For iIdx = 1 To Sheets.Count ' non-zero based collection
If Sheets(iIdx).Name Like "Data*" Then
iCountSheets = iCountSheets + 1
End If
Next
MsgBox iCountSheets & " sheets like data"
【讨论】:
1. 你的 If 缺少 End-If 2 设置 iIdx = 0 会给你一个错误。我很惊讶这篇文章在你编辑 LOL 后得到的支持。
这是你正在尝试的吗?
'~~> Case Sensitive
Sub Sample()
Dim ws As Worksheet
Dim shCount As Long
For Each ws In ThisWorkbook.Sheets
If ws.Name Like "Data*" Then shCount = shCount + 1
Next ws
Debug.Print shCount
End Sub
'~~> Or use the below if you have sheets like data1, Data2, DaTa3 etc
Sub Sample()
Dim ws As Worksheet
Dim shCount As Long
For Each ws In ThisWorkbook.Sheets
If UCase(ws.Name) Like "DATA*" Then shCount = shCount + 1
Next ws
Debug.Print shCount
End Sub
【讨论】: