Страницы: 1
RSS
В текстах диапазона сделать первую букву заглавной, остальные прописные
 
Добрый день.

Этот цикл выполняется очень долго, кто подскажет почему?  LastRowForecast  =~ 5000
Код
For X = 39 To LastRowForecast    
    Dim strData As String
    strData = Range("AI" & X).Value
    strData = UCase(Left(strData, 1)) & LCase(Mid(strData, 2))
    Range("AI" & X).Value = strData
Next X
 
Работа с объектами листа медленная. Взять данные в массив, там обработать и выгрузить на лист.
Не нужно на каждом шаге объявлять переменную. Записать строку  над циклом
Код
    Dim aData()
    Dim LastRowForecast As Long
    Dim i As Long
    
    LastRowForecast = ...
    aData = Ramge("AI39:AI" & LastRowForecast).Value
    
    For i = 1 To UBound(aData)
        aData(i, 1) = UCase(aData(i, 1)) & LCase(Mid(aData(i, 1), 2))
    Next i
    
    Ramge("AI39:AI" & LastRowForecast).Value = aData
 
Спасибо!

Должен был сам догадаться.
Немного поправил код (поменял Ramge на Range и добавил оператор Left:
Код
    Dim aData()    Dim LastRowForecast As Long
    Dim i As Long
     
    LastRowForecast = ...
    aData = Range("AI39:AI" & LastRowForecast).Value
     
    For i = 1 To UBound(aData)
        aData(i, 1) = UCase(Left(aData(i, 1),1)) & LCase(Mid(aData(i, 1), 2))
    Next i
    Range("AI39:AI" & LastRowForecast).Value = aData
   
   
 
Регистр
Страницы: 1
Наверх