Добрый день. Помогите пожалуйста, не получается создать цикл. Циклом просматриваем с 4 по 20 строку на наличие в строках информации, если находим данные в строке, то запускаем данную функцию. Переработанные данные нужно записать в ячейку К4 Файл с примером во вложении
Добрый день. Помогите пожалуйста, не получается создать цикл. Циклом просматриваем с 4 по 20 строку на наличие в строках информации, если находим данные в строке, то запускаем данную функцию. Переработанные данные нужно записать в ячейку К4 Файл с примером во вложенииmrKutuzov
mrKutuzov, оформите код тегами, ей Богу непонятно что там есть ( в режиме редактирования выделите код и нажмите кнопочку #) [p.s.] и копируйте код в русской раскладке клавиатуры: тогда не будет кракозябров. и, кстати файлик бы приложить
mrKutuzov, оформите код тегами, ей Богу непонятно что там есть ( в режиме редактирования выделите код и нажмите кнопочку #) [p.s.] и копируйте код в русской раскладке клавиатуры: тогда не будет кракозябров. и, кстати файлик бы приложитькитин
Не судите очень строго:я пытаюсь научиться ЯД 41001877306852
Сообщение отредактировал китин - Понедельник, 27.03.2017, 14:11
Так? В самом макросе ничего не менял почти, только цикл добавил
[vba]
Код
Private Sub btn1_Click() Application.ScreenUpdating = 0'отключаем обновление экрана Application.Calculation = xlCalculationManual'отключаем автопересчет r0_ = 4'начальная строка r1_ = Range("A" & Rows.Count).End(xlUp).Row'последняя заполненная строка. Аналог в Excel - встаем в ячейку A1048576 и жмем Контрл+СтелкаВверх If r1_ >= r0_ 'если последняя строка не меньше первой For j = r0_ To r1_'цикл от первой до последней строки '=========== дальше Ваш код If Cells(j, 1) <> "" Then'еслиi-я строка первого столбца не пустая Txt = LCase(Cells(j, 1))'работаем с ней Txt = Replace(Txt, ", , ", "") Txt = Replace(Txt, ", , ,", "") Txt = Replace(Txt, ", ,", ",") Txt = Replace(Txt, ",", ", ") Dim Str() As String Str = Split(Txt, " ") Txt = "" For Each s In Str L = Left(s, 1) If Txt = "" Then Txt = Replace(s, L, UCase(L), 1, 1) Else Txt = Txt & " " & Replace(s, L, UCase(L), 1, 1) End If Next Txt = Replace(Txt, "Город", "г.") Txt = Replace(Txt, "Улица", "ул.") Txt = Replace(Txt, "Литера", "лит.") Txt = Replace(Txt, "Помещение", "пом.") For i = Len(Txt) To 1 Step -1 If Mid(Txt, i, 1) Like "[0-9]" Or Mid(Txt, i, 1) = "-" Then L = Mid(Txt, i + 1, 1) a = Mid(Txt, 1, i) b = Replace(Txt, L, UCase(L), i + 1, 1) Txt = a & b End If
Next i Cells(j, 11) = Txt' в i-ую строку 11-го столбца вставляем полученное End If Next j' окончание цикла End If Application.Calculation = xlCalculationAutomatic'включаем автопересчет Application.ScreenUpdating = 0'включаем обновление экрана End Sub
[/vba]
Добавил в макрос пояснялки и проверку на пусто. Файл перевложил
Так? В самом макросе ничего не менял почти, только цикл добавил
[vba]
Код
Private Sub btn1_Click() Application.ScreenUpdating = 0'отключаем обновление экрана Application.Calculation = xlCalculationManual'отключаем автопересчет r0_ = 4'начальная строка r1_ = Range("A" & Rows.Count).End(xlUp).Row'последняя заполненная строка. Аналог в Excel - встаем в ячейку A1048576 и жмем Контрл+СтелкаВверх If r1_ >= r0_ 'если последняя строка не меньше первой For j = r0_ To r1_'цикл от первой до последней строки '=========== дальше Ваш код If Cells(j, 1) <> "" Then'еслиi-я строка первого столбца не пустая Txt = LCase(Cells(j, 1))'работаем с ней Txt = Replace(Txt, ", , ", "") Txt = Replace(Txt, ", , ,", "") Txt = Replace(Txt, ", ,", ",") Txt = Replace(Txt, ",", ", ") Dim Str() As String Str = Split(Txt, " ") Txt = "" For Each s In Str L = Left(s, 1) If Txt = "" Then Txt = Replace(s, L, UCase(L), 1, 1) Else Txt = Txt & " " & Replace(s, L, UCase(L), 1, 1) End If Next Txt = Replace(Txt, "Город", "г.") Txt = Replace(Txt, "Улица", "ул.") Txt = Replace(Txt, "Литера", "лит.") Txt = Replace(Txt, "Помещение", "пом.") For i = Len(Txt) To 1 Step -1 If Mid(Txt, i, 1) Like "[0-9]" Or Mid(Txt, i, 1) = "-" Then L = Mid(Txt, i + 1, 1) a = Mid(Txt, 1, i) b = Replace(Txt, L, UCase(L), i + 1, 1) Txt = a & b End If
Next i Cells(j, 11) = Txt' в i-ую строку 11-го столбца вставляем полученное End If Next j' окончание цикла End If Application.Calculation = xlCalculationAutomatic'включаем автопересчет Application.ScreenUpdating = 0'включаем обновление экрана End Sub
[/vba]
Добавил в макрос пояснялки и проверку на пусто. Файл перевложил_Boroda_