Я понимаю, что это действительно старая тема, но поскольку мой стандартный подход еще не здесь, я решил опубликовать его для будущих googlers.
var a, b, abort = false;
for (a = 0; a < 10 && !abort; a++) {
for (b = 0; b < 10 && !abort; b++) {
if (condition) {
doSomeThing();
abort = true;
}
}
}
Создайте новую подпрограмму или функцию, используя только три строки, которые повторяются в текущем коде. Определите параметры для вещей, которые меняются. Затем вызовите подпрограмму / функцию для каждого набора параметров. Нечто подобное
'call the sub/function from other code
DoAutoFilterArray ws, 5, "xxxxxx", Cells(2, 5), Cells(lr, 5), Cells(2, 3), Cells(lr, 3)
DoAutoFilterString ws, 18, "xxxxxx", Cells(2, 3), Cells(lr, 3), "FULL ACCOUNT UPGRADE"
Sub DoAutoFilterArray(ws as Worksheet, filterField as Long, criteria as String, _
sourceCell1 as Range, sourceCell2 as Range, _
targetCell1 as Range, targetCell2 as Range)
With ws
.Cells.AutoFilter Field:=filterField, Criteria1:=criteria
.Range(sourceCell1, sourceCell2).SpecialCells(xlCellTypeVisible).Value = .Range(targetCell1, targetCell2).SpecialCells(xlCellTypeVisible)
.Cells.Autofiler
End With
End Sub
Sub DoAutoFilterString(ws as Worksheet, filterField as Long, criteria as String, _
sourceCell1 as Range, sourceCell2 as Range, _
targetValue as String)
With ws
.Cells.AutoFilter Field:=filterField, Criteria1:=criteria
.Range(sourceCell1, sourceCell2).SpecialCells(xlCellTypeVisible).Value = targetValue
.Cells.Autofiler
End With
End Sub