查找名为 CSn 的工作表总数
Find the total number of sheets named CSn
通常空白估算工作簿在数据输入 sheet CS1(始终存在)之前包含 9 sheets,x 个 CS sheets(其中 x 可以是 50 , 100, 200 等)和最后一个 CS sheet 之后的零 sheets。有时用户会在最后一个 CS sheet 前后添加 sheets 但不允许在第一个和最后一个 CS sheet.
之间添加 sheets
要求改进现有的 VLOOKUP 代码(目前查看工作簿中的每个 sheet)以仅查看所有 CS sheet。因此需要找到工作簿中有多少名为 "CSn"(其中 n 是从 1 到未知的整数)sheet 的人。如果 CS sheet 位于工作簿的末尾,这很容易,但如果用户在最后一个 CS sheet.
之后添加其他 sheet,则不那么容易
我不知道如何确定最后一个 CS sheet 索引,因为 CS sheet 的数量在变化。
显示 CS 数量的快速代码 sheets
Public Sub No_of_Sheets()
intCount = ActiveWorkbook.Sheets.Count 'Find total number of workbook sheets
intCS1_Index = Sheets("CS1").Index 'CS1 Sheet index
intCSCount = intCount - (intCS1_Index - 1) 'Find total number of CS sheets
nonCSSheets = intCount - intCSCount 'Find total number of Non-CS sheets
MsgBox " CS1 Sheet Index = " & intCS1_Index
MsgBox " CS Sheet Count = " & intCSCount
MsgBox " Non CS Sheet Count = " & nonCSSheets
End Sub
循环遍历每个 sheet 并测试 CS 和另一个数字的名称。然后将该字符串转换为整数并存储它(如果它较大)以便获得最大值。测试工作:
Sub FindMaxCS()
Dim ws1 As Worksheet, MaxInt As Integer
MaxInt = 0
For Each ws1 In ActiveWorkbook.Worksheets
If ws1.Name Like "CS*" Then
If MaxInt < CInt(Mid(ws1.Name, 3, 99)) Then
MaxInt = CInt(Mid(ws1.Name, 3, 99))
End If
End If
Next ws1
MsgBox MaxInt
End Sub
这个简短的用户定义函数(或UDF)将return以字母CS.
Public Function num_CSx_Sheets()
Dim w As Long, cs As Long
For w = 1 To Sheets.Count
cs = cs - CBool(UCase(Left(Sheets(w).Name, 2)) = "CS")
Next w
num_CSx_Sheets = cs
End Function
可以用在工作表上,例如,
=num_CSx_Sheets()
... 或在 VBA 中,
Dim i as long
i = num_CSx_Sheets()
通常空白估算工作簿在数据输入 sheet CS1(始终存在)之前包含 9 sheets,x 个 CS sheets(其中 x 可以是 50 , 100, 200 等)和最后一个 CS sheet 之后的零 sheets。有时用户会在最后一个 CS sheet 前后添加 sheets 但不允许在第一个和最后一个 CS sheet.
之间添加 sheets要求改进现有的 VLOOKUP 代码(目前查看工作簿中的每个 sheet)以仅查看所有 CS sheet。因此需要找到工作簿中有多少名为 "CSn"(其中 n 是从 1 到未知的整数)sheet 的人。如果 CS sheet 位于工作簿的末尾,这很容易,但如果用户在最后一个 CS sheet.
之后添加其他 sheet,则不那么容易我不知道如何确定最后一个 CS sheet 索引,因为 CS sheet 的数量在变化。
显示 CS 数量的快速代码 sheets
Public Sub No_of_Sheets()
intCount = ActiveWorkbook.Sheets.Count 'Find total number of workbook sheets
intCS1_Index = Sheets("CS1").Index 'CS1 Sheet index
intCSCount = intCount - (intCS1_Index - 1) 'Find total number of CS sheets
nonCSSheets = intCount - intCSCount 'Find total number of Non-CS sheets
MsgBox " CS1 Sheet Index = " & intCS1_Index
MsgBox " CS Sheet Count = " & intCSCount
MsgBox " Non CS Sheet Count = " & nonCSSheets
End Sub
循环遍历每个 sheet 并测试 CS 和另一个数字的名称。然后将该字符串转换为整数并存储它(如果它较大)以便获得最大值。测试工作:
Sub FindMaxCS()
Dim ws1 As Worksheet, MaxInt As Integer
MaxInt = 0
For Each ws1 In ActiveWorkbook.Worksheets
If ws1.Name Like "CS*" Then
If MaxInt < CInt(Mid(ws1.Name, 3, 99)) Then
MaxInt = CInt(Mid(ws1.Name, 3, 99))
End If
End If
Next ws1
MsgBox MaxInt
End Sub
这个简短的用户定义函数(或UDF)将return以字母CS.
Public Function num_CSx_Sheets()
Dim w As Long, cs As Long
For w = 1 To Sheets.Count
cs = cs - CBool(UCase(Left(Sheets(w).Name, 2)) = "CS")
Next w
num_CSx_Sheets = cs
End Function
可以用在工作表上,例如,
=num_CSx_Sheets()
... 或在 VBA 中,
Dim i as long
i = num_CSx_Sheets()