Excel VBA цикл через все листы, содержащие первую букву М - PullRequest
0 голосов
/ 08 ноября 2018

Я пытался пройтись по определенному номеру листа, у меня есть 20 листов, которые начинаются все с М, например, с М1, М2 и т. Д. До М20, моя проблема в том, что я зацикливаюсь и пишу, но вместо пишу только на листах М, пишу на всех листах.

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"

Эта строка должна влиять только на ячейку ("A50") на листах, начинающихся с M.

Ответы [ 2 ]

0 голосов
/ 08 ноября 2018

Если вас не интересует количество листов, а вы просто хотите записать значение в эти листы, вы можете использовать:

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
0 голосов
/ 08 ноября 2018

Вы можете использовать для каждого.

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

Вам нужно заключить оба синтаксиса в if.

...