Sub Замена() ' Замена Макрос ' Зхамена одного значение на другое Dim avArr() '
Set avArr = ("A1:A39") 'выбор диапозона значений в исходном листе Application.AutoCorrect.AddReplacement What:="m", Replacement:="м" ' указываем параметры замены For i = 1 To 40
If avArr(i, 1) = "m" Then 'проверяем массив на наличие записи с этой буквой avArr = Replace(avArr, "m", "м") 'Заменяем значение i = i + 1: ' переходим к следующему элементу массива
Exit For
Else ' в случае не совпадения по условию сразу переходим к следующему элементу массива i = i + 1: End If Next i
End Sub
[/vba] Отладчик ругается на объявление массива, есть у кого нить соображения по этому поводу?
[vba]
Code
Sub Замена() ' Замена Макрос ' Зхамена одного значение на другое Dim avArr() '
Set avArr = ("A1:A39") 'выбор диапозона значений в исходном листе Application.AutoCorrect.AddReplacement What:="m", Replacement:="м" ' указываем параметры замены For i = 1 To 40
If avArr(i, 1) = "m" Then 'проверяем массив на наличие записи с этой буквой avArr = Replace(avArr, "m", "м") 'Заменяем значение i = i + 1: ' переходим к следующему элементу массива
Exit For
Else ' в случае не совпадения по условию сразу переходим к следующему элементу массива i = i + 1: End If Next i
End Sub
[/vba] Отладчик ругается на объявление массива, есть у кого нить соображения по этому поводу?maloy
Sub Замена() ' Замена Макрос ' Замена одного значение на другое Dim avArr '
Set avArr = Range("A1:A39") '.Value 'выбор диапазона значений в исходном листе For i = 1 To avArr.Rows.Count If avArr(i) = "m" Then 'проверяем диапазон на наличие записи с этой буквой avArr(i) = Replace(avArr(i), "m", "м") 'Заменяем значение End If Next i
End Sub
[/vba]
Хотя это можно заменить одной строкой:
[vba]
Code
Sub Macro1() Range("A1:A39").Replace What:="m", Replacement:="м", LookAt:=xlWhole End Sub
[/vba]
Эх, писал медленно... Но у мен я есть LookAt:=xlWhole
Может быть так хотелось:
[vba]
Code
Sub Замена() ' Замена Макрос ' Замена одного значение на другое Dim avArr '
Set avArr = Range("A1:A39") '.Value 'выбор диапазона значений в исходном листе For i = 1 To avArr.Rows.Count If avArr(i) = "m" Then 'проверяем диапазон на наличие записи с этой буквой avArr(i) = Replace(avArr(i), "m", "м") 'Заменяем значение End If Next i
End Sub
[/vba]
Хотя это можно заменить одной строкой:
[vba]
Code
Sub Macro1() Range("A1:A39").Replace What:="m", Replacement:="м", LookAt:=xlWhole End Sub
[/vba]
Эх, писал медленно... Но у мен я есть LookAt:=xlWhole Hugo
Sub Macro1() Range("A1:A39").Replace What:="m", Replacement:="м", LookAt:=xlWhole End Sub
Таким вариантом у меня не меняет ни фига(((( А вот то что Джонсон предложил работает на ура, хотя работоспособность вашего кода подвергать сомнению, тоже не правильно, а вдруг он только у меня не работает)))
Sub Macro1() Range("A1:A39").Replace What:="m", Replacement:="м", LookAt:=xlWhole End Sub
Таким вариантом у меня не меняет ни фига(((( А вот то что Джонсон предложил работает на ура, хотя работоспособность вашего кода подвергать сомнению, тоже не правильно, а вдруг он только у меня не работает)))maloy
Мой "маленький" код меняет значение в том случае, если оно в ячейке одно (опция "ячейка целиком"). Как в общем и код Jhonson'а, но у меня это указано явно. Т.е. работать они должны одинаково. Неужели там есть неизвестные нюансы?
Мой "маленький" код меняет значение в том случае, если оно в ячейке одно (опция "ячейка целиком"). Как в общем и код Jhonson'а, но у меня это указано явно. Т.е. работать они должны одинаково. Неужели там есть неизвестные нюансы?Hugo
Понимаете, у меня код макроса, достаточно обширный и его задача не сводится к одной простой замене значений, просто на этом пункте я впал в ступор..... А если по существу. То ВАШ вариант у меня заработал после того как я его прописал в самый конец кода, а первый вариант работает внутри кода макроса на копирование данных из одного файла в другой. Хотя в свете своей некомпетентности в данном вопросе, я могу и ошибаться......
Понимаете, у меня код макроса, достаточно обширный и его задача не сводится к одной простой замене значений, просто на этом пункте я впал в ступор..... А если по существу. То ВАШ вариант у меня заработал после того как я его прописал в самый конец кода, а первый вариант работает внутри кода макроса на копирование данных из одного файла в другой. Хотя в свете своей некомпетентности в данном вопросе, я могу и ошибаться......maloy
Ещё один вопрос...... прописываю в теле макрос dim с as string с = Val(Inputbox("введите число")) Но переменная 'с' как была нулевой так и остаётся. подскажите почему?
Ещё один вопрос...... прописываю в теле макрос dim с as string с = Val(Inputbox("введите число")) Но переменная 'с' как была нулевой так и остаётся. подскажите почему?maloy