Excel vba循环遍历包含第一个字母M的所有工作表
我一直在尝试循环一个特定的表号,我有20张表,都是从M开始的,比如M1,M2等等,直到M20,我的问题是我在循环和写作,但我不是只在M表上写,而是在所有的表上写Excel vba循环遍历包含第一个字母M的所有工作表,excel,vba,excel-formula,excel-2010,Excel,Vba,Excel Formula,Excel 2010,我一直在尝试循环一个特定的表号,我有20张表,都是从M开始的,比如M1,M2等等,直到M20,我的问题是我在循环和写作,但我不是只在M表上写,而是在所有的表上写 Sub CountWSNames() Dim I As Long Dim xCount As Integer For I = 1 To ActiveWorkbook.Sheets.Count If Mid(Sheets(I).Name, 1, 1) = "M" Th
Sub CountWSNames()
Dim I As Long
Dim xCount As Integer
For I = 1 To ActiveWorkbook.Sheets.Count
If Mid(Sheets(I).Name, 1, 1) = "M" Then xCount = xCount + 1
ThisWorkbook.Worksheets(I).Range("A50") = "V" 'This line must write only to M sheets
Next
MsgBox "There are " & CStr(xCount) & " sheets that start with 'M'", vbOKOnly, "KuTools for Excel"
End Sub
一段类似于我的代码
ThisWorkbook.Worksheets(I).Range("A50") = "V"
该行只能影响以M开头的纸张上的单元格(“A50”)。您可以对每个单元格使用
For each sht in ActiveWorkbook.Sheets
If Mid(sht.Name, 1, 1) = "M" Then
xCount = xCount +1
sht.Range("A50") = "V" 'This line must write only to M sheets
End if
Next
如果不关心工作表计数,只想向这些工作表写入一个值,则需要将这两个语法都包装在
中,然后可以使用:
Sub WriteToMSheets()
Dim ws as Worksheet
For Each ws in Thisworkbook.Worksheets
If Ucase(Left(ws.Name,1)) = "M" Then ws.Range("A50").Value = "V"
Next ws
End Sub
可能不是问题,但这将包括名为“我自己的工作表”的工作表,因为您将第一个字母大写。次要问题:为什么MID(工作表(I).Name,1,1)
而不是LEFT(工作表(I).Name,1)
?