Имя пользователя:
Пароль:
 

Название темы: Оптимизация кода
Показать сообщение отдельно

Старожил


Сообщения: 352
Благодарности: 193

Профиль | Отправить PM | Цитировать


blackeangel,
Как вариант, можно завести отдельную процедуру Sub ProcessRow(i, ncolumn, ncolumn2, ...) с номерами строки и столбцов в качестве параметров.
В цикле останется
Код: Выделить весь код
Do While Cells(i, Ncolumn2).Value <> Empty
    ProcessRow i, ncolumn, ncolumn2, ...
    i = i + 1
Loop
В процедуре:
Код: Выделить весь код
Sub ProcessRow(i, ncolumn, ncolumn2, ...)
    Dim strValue As String
    Dim objRange As Range

    strValue = Cells(i, ncolumn).Value
    Set objRange = Cells(i, ncolumn + 1)

    objRegExp.Pattern = "^5085"

    If objRegExp.Test(strValue) Then
        objRange.Value = "С85"
        Exit Sub
    End If
    
    objRegExp.Pattern = "^5081"

    If objRegExp.Test(strValue) Then
        objRange.Value = "С81"
        Exit Sub
    End If

    ...
    ...
End Sub
Синтаксис примерный (на VBA уже давно ничего не писал) но вроде корректный с точки зрения документации.

ЗЫ
Оптимизации в сообщении Iska - это не только оптимизация по скорости, но и минимизация ошибок из-за опечаток + более легко читаемый код (особенно если переменным присвоить более соответствующие роли имена).

Последний раз редактировалось iglezz, 25-03-2021 в 20:22.

Это сообщение посчитали полезным следующие участники:

Отправлено: 20:07, 25-03-2021 | #4

Название темы: Оптимизация кода