У вас есть переменная листа, так что используйте ее!Нет необходимости активировать листы, когда лист явно определен.
Вам следует изменить переменную листа на , а не соответствовать ключевым словам / объектам VBA.Я изменил его на ws
, поскольку ваш метод именования был слишком близок к предопределенным объектам VBA
Кроме того, вы строите строку с оператором &
, а не +
Option Explicit
Public Sub someFunction()
Dim mystring As String
Dim recipient As Range
Dim colNum As Long
Dim ws As Worksheet
For Each ws In ActiveWorkbook.Worksheets
Select Case ws.Name
Case "ABC Group", "DEF Group"
' DO NOTHING
Case Else
colNum = Application.WorksheetFunction.Match("a column name", ws.Rows(5), 0)
ws.Rows(5).AutoFilter Field:=colNum - 1, Criteria1:="=some string*"
For Each recipient In ws.Range("B6:B" & ws.UsedRange.Rows.Count).SpecialCells(xlCellTypeVisible).Cells
mystring = mystring & recipient & ";"
Next recipient
End Select
Next ws
mystring = Left(mystring, Len(mystring) - 1) '<-- Remove last instance of ";"
End Sub