Копировать значения из буфера
rever27
Дата: Вторник, 09.06.2015, 01:08 |
Сообщение № 1
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 141
Репутация:
0
±
Замечаний:
20% ±
Excel 2010
Тут скорее 2 вопроса: 1) Нужно значение 1 скопировать и вставить в определенный диапазон. Я для этого его вписываю в пустую ячейку, а потом копирую [vba]Код
Range("ER5") = 1 Range("ER5").Copy
[/vba] Есть ли способ поизящнее? 2)После того, как я копирую это значение, либо задаю переменную X, которая равна 1, мой макрос заканчивается(End Sub). И начинается новый, в который нужно вставить это значение (не спрашивайте почему, для экономии места, это просто пример). Вопрос: Как перенести результаты значений переменных из первого макроса во второй(в котором первый макрос и прописан), если после окончания макроса буфер отчищается.
Тут скорее 2 вопроса: 1) Нужно значение 1 скопировать и вставить в определенный диапазон. Я для этого его вписываю в пустую ячейку, а потом копирую [vba]Код
Range("ER5") = 1 Range("ER5").Copy
[/vba] Есть ли способ поизящнее? 2)После того, как я копирую это значение, либо задаю переменную X, которая равна 1, мой макрос заканчивается(End Sub). И начинается новый, в который нужно вставить это значение (не спрашивайте почему, для экономии места, это просто пример). Вопрос: Как перенести результаты значений переменных из первого макроса во второй(в котором первый макрос и прописан), если после окончания макроса буфер отчищается. rever27
Ответить
Сообщение Тут скорее 2 вопроса: 1) Нужно значение 1 скопировать и вставить в определенный диапазон. Я для этого его вписываю в пустую ячейку, а потом копирую [vba]Код
Range("ER5") = 1 Range("ER5").Copy
[/vba] Есть ли способ поизящнее? 2)После того, как я копирую это значение, либо задаю переменную X, которая равна 1, мой макрос заканчивается(End Sub). И начинается новый, в который нужно вставить это значение (не спрашивайте почему, для экономии места, это просто пример). Вопрос: Как перенести результаты значений переменных из первого макроса во второй(в котором первый макрос и прописан), если после окончания макроса буфер отчищается. Автор - rever27 Дата добавления - 09.06.2015 в 01:08
_Boroda_
Дата: Вторник, 09.06.2015, 01:34 |
Сообщение № 2
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16675
Репутация:
6481
±
Замечаний:
0% ±
2003; 2007; 2010; 2013 RUS
А просто вот так не пойдет? [vba][/vba] А по второму вопросу - это уже новая тема должна быть.
А просто вот так не пойдет? [vba][/vba] А по второму вопросу - это уже новая тема должна быть. _Boroda_
Скажи мне, кудесник, любимец ба’гов... Платная помощь: Boroda_Excel@mail.ru Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
Ответить
Сообщение А просто вот так не пойдет? [vba][/vba] А по второму вопросу - это уже новая тема должна быть. Автор - _Boroda_ Дата добавления - 09.06.2015 в 01:34
rever27
Дата: Вторник, 09.06.2015, 12:14 |
Сообщение № 3
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 141
Репутация:
0
±
Замечаний:
20% ±
Excel 2010
_Boroda_ , нет, не подойдет. Вот весь макрос: [vba]Код
Sub b_Text_to_Number() Range("ER5") = 1 Range("ER5").Copy Cells(ActiveCell.Row, 17).Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlMultiply End Sub
[/vba] Суть в том, что при добавлении таблиц в ексель он не всегда переводит значения в число, оставляя его текстом. По этому поводу нашел в сети информацию только таким способом: Данный диапазон умножать Вставкой на 1, тем самым заменяются значения ячейки на число. (Руками неудобно) Новую тему сейчас создам [moder]Вы лучше файл приложите
_Boroda_ , нет, не подойдет. Вот весь макрос: [vba]Код
Sub b_Text_to_Number() Range("ER5") = 1 Range("ER5").Copy Cells(ActiveCell.Row, 17).Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlMultiply End Sub
[/vba] Суть в том, что при добавлении таблиц в ексель он не всегда переводит значения в число, оставляя его текстом. По этому поводу нашел в сети информацию только таким способом: Данный диапазон умножать Вставкой на 1, тем самым заменяются значения ячейки на число. (Руками неудобно) Новую тему сейчас создам [moder]Вы лучше файл приложитеrever27
Сообщение отредактировал _Boroda_ - Вторник, 09.06.2015, 12:19
Ответить
Сообщение _Boroda_ , нет, не подойдет. Вот весь макрос: [vba]Код
Sub b_Text_to_Number() Range("ER5") = 1 Range("ER5").Copy Cells(ActiveCell.Row, 17).Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlMultiply End Sub
[/vba] Суть в том, что при добавлении таблиц в ексель он не всегда переводит значения в число, оставляя его текстом. По этому поводу нашел в сети информацию только таким способом: Данный диапазон умножать Вставкой на 1, тем самым заменяются значения ячейки на число. (Руками неудобно) Новую тему сейчас создам [moder]Вы лучше файл приложитеАвтор - rever27 Дата добавления - 09.06.2015 в 12:14
Manyasha
Дата: Вторник, 09.06.2015, 12:19 |
Сообщение № 4
Группа: Модераторы
Ранг: Старожил
Сообщений: 2198
Репутация:
898
±
Замечаний:
0% ±
Excel 2010, 2016
rever27 , для диапазона, в котором нужно текст в число преобразовать напишите так:[vba]Код
Range("A1:A3").Value = Range("A1:A3").Value
[/vba]
rever27 , для диапазона, в котором нужно текст в число преобразовать напишите так:[vba]Код
Range("A1:A3").Value = Range("A1:A3").Value
[/vba]Manyasha
ЯД: 410013299366744 WM: R193491431804
Ответить
Сообщение rever27 , для диапазона, в котором нужно текст в число преобразовать напишите так:[vba]Код
Range("A1:A3").Value = Range("A1:A3").Value
[/vba]Автор - Manyasha Дата добавления - 09.06.2015 в 12:19
_Boroda_
Дата: Вторник, 09.06.2015, 12:25 |
Сообщение № 5
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16675
Репутация:
6481
±
Замечаний:
0% ±
2003; 2007; 2010; 2013 RUS
он не всегда переводит значения в число, оставляя его текстом
Приведите пример такого безобразия Сравните Ваш код и последнюю строку [vba]Код
Sub b_Text_to_Number() Range("a5") = 1 Range("a5").Copy Cells(ActiveCell.Row, 17).PasteSpecial Paste:=xlPasteValues Application.CutCopyMode = False Cells(ActiveCell.Row, 18) = 1 End Sub
[/vba] Работают оба, но последняя строка как-то покороче, не? Кстати, уж если так хочется сначала вставлять единицу, потом ее копировать, то [vba]Код
Range("a5") = 1 Range("a5").Copy Cells(ActiveCell.Row, 17)
[/vba] И не нужно потом снимать копирование (бегущие черточки вокруг А5) [vba]Код
Application.CutCopyMode = False
[/vba]
он не всегда переводит значения в число, оставляя его текстом
Приведите пример такого безобразия Сравните Ваш код и последнюю строку [vba]Код
Sub b_Text_to_Number() Range("a5") = 1 Range("a5").Copy Cells(ActiveCell.Row, 17).PasteSpecial Paste:=xlPasteValues Application.CutCopyMode = False Cells(ActiveCell.Row, 18) = 1 End Sub
[/vba] Работают оба, но последняя строка как-то покороче, не? Кстати, уж если так хочется сначала вставлять единицу, потом ее копировать, то [vba]Код
Range("a5") = 1 Range("a5").Copy Cells(ActiveCell.Row, 17)
[/vba] И не нужно потом снимать копирование (бегущие черточки вокруг А5) [vba]Код
Application.CutCopyMode = False
[/vba]_Boroda_
Скажи мне, кудесник, любимец ба’гов... Платная помощь: Boroda_Excel@mail.ru Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
Ответить
Сообщение он не всегда переводит значения в число, оставляя его текстом
Приведите пример такого безобразия Сравните Ваш код и последнюю строку [vba]Код
Sub b_Text_to_Number() Range("a5") = 1 Range("a5").Copy Cells(ActiveCell.Row, 17).PasteSpecial Paste:=xlPasteValues Application.CutCopyMode = False Cells(ActiveCell.Row, 18) = 1 End Sub
[/vba] Работают оба, но последняя строка как-то покороче, не? Кстати, уж если так хочется сначала вставлять единицу, потом ее копировать, то [vba]Код
Range("a5") = 1 Range("a5").Copy Cells(ActiveCell.Row, 17)
[/vba] И не нужно потом снимать копирование (бегущие черточки вокруг А5) [vba]Код
Application.CutCopyMode = False
[/vba]Автор - _Boroda_ Дата добавления - 09.06.2015 в 12:25
rever27
Дата: Вторник, 09.06.2015, 12:37 |
Сообщение № 6
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 141
Репутация:
0
±
Замечаний:
20% ±
Excel 2010
Manyasha , ваш метод не работает ( _Boroda_ , не совсем понял, что вы хотели сказать? Как избавиться от лишнего Select? Вот пример мой
Manyasha , ваш метод не работает ( _Boroda_ , не совсем понял, что вы хотели сказать? Как избавиться от лишнего Select? Вот пример мойrever27
Ответить
Сообщение Manyasha , ваш метод не работает ( _Boroda_ , не совсем понял, что вы хотели сказать? Как избавиться от лишнего Select? Вот пример мойАвтор - rever27 Дата добавления - 09.06.2015 в 12:37
rever27
Дата: Вторник, 09.06.2015, 12:48 |
Сообщение № 7
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 141
Репутация:
0
±
Замечаний:
20% ±
Excel 2010
_Boroda_ , Спасибо за функцию копирования, не знал )) Словами: У меня есть внешние данные, таблица. Я вставляю их в Ексель. И часто (не всегда) бывает, что ексель видит эти числа как текст. Поэтому приходить правой кнопкой через Формат Ячейки задавать диапазону Числовое значение Это неудобно. Поэтому я нашел способ с помощью умножения этого диапазона на 1, тем самым он автоматически становиться равним value. Но хотелось бы не засорять лист этими Единицами, и либо ее держать в памяти, без прописи, потом удаления, либо найти более изящный метод сделать диапазон числовым
_Boroda_ , Спасибо за функцию копирования, не знал )) Словами: У меня есть внешние данные, таблица. Я вставляю их в Ексель. И часто (не всегда) бывает, что ексель видит эти числа как текст. Поэтому приходить правой кнопкой через Формат Ячейки задавать диапазону Числовое значение Это неудобно. Поэтому я нашел способ с помощью умножения этого диапазона на 1, тем самым он автоматически становиться равним value. Но хотелось бы не засорять лист этими Единицами, и либо ее держать в памяти, без прописи, потом удаления, либо найти более изящный метод сделать диапазон числовымrever27
Ответить
Сообщение _Boroda_ , Спасибо за функцию копирования, не знал )) Словами: У меня есть внешние данные, таблица. Я вставляю их в Ексель. И часто (не всегда) бывает, что ексель видит эти числа как текст. Поэтому приходить правой кнопкой через Формат Ячейки задавать диапазону Числовое значение Это неудобно. Поэтому я нашел способ с помощью умножения этого диапазона на 1, тем самым он автоматически становиться равним value. Но хотелось бы не засорять лист этими Единицами, и либо ее держать в памяти, без прописи, потом удаления, либо найти более изящный метод сделать диапазон числовымАвтор - rever27 Дата добавления - 09.06.2015 в 12:48
Manyasha
Дата: Вторник, 09.06.2015, 12:55 |
Сообщение № 8
Группа: Модераторы
Ранг: Старожил
Сообщений: 2198
Репутация:
898
±
Замечаний:
0% ±
Excel 2010, 2016
Пробуйте:[vba]Код
Sub format_() Range("B2:B5").NumberFormat = "0" Range("B2:B5").Value = Range("B2:B5").Value End Sub
[/vba] Можно вместо Range написать Selection, чтобы макрос обрабатывал выделенный диапазон.
Пробуйте:[vba]Код
Sub format_() Range("B2:B5").NumberFormat = "0" Range("B2:B5").Value = Range("B2:B5").Value End Sub
[/vba] Можно вместо Range написать Selection, чтобы макрос обрабатывал выделенный диапазон. Manyasha
ЯД: 410013299366744 WM: R193491431804
Ответить
Сообщение Пробуйте:[vba]Код
Sub format_() Range("B2:B5").NumberFormat = "0" Range("B2:B5").Value = Range("B2:B5").Value End Sub
[/vba] Можно вместо Range написать Selection, чтобы макрос обрабатывал выделенный диапазон. Автор - Manyasha Дата добавления - 09.06.2015 в 12:55
_Boroda_
Дата: Вторник, 09.06.2015, 12:55 |
Сообщение № 9
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16675
Репутация:
6481
±
Замечаний:
0% ±
2003; 2007; 2010; 2013 RUS
Ну так бы сразу и сказали Запускаете вот это и не нужно ничего никуда копировать. Только диапазон свой поставьте. Можно с запасом [vba]Код
Range("b2:c555").FormulaLocal = Range("b2:c555").FormulaLocal
[/vba] И вот здесь почитайте http://www.excelworld.ru/forum/3-5329-54217-16-1373268845 Там как раз говорится, что сложение с 0 (что, фактически, то же самое, что и умножению на 1) работает не всегда.
Ну так бы сразу и сказали Запускаете вот это и не нужно ничего никуда копировать. Только диапазон свой поставьте. Можно с запасом [vba]Код
Range("b2:c555").FormulaLocal = Range("b2:c555").FormulaLocal
[/vba] И вот здесь почитайте http://www.excelworld.ru/forum/3-5329-54217-16-1373268845 Там как раз говорится, что сложение с 0 (что, фактически, то же самое, что и умножению на 1) работает не всегда. _Boroda_
Скажи мне, кудесник, любимец ба’гов... Платная помощь: Boroda_Excel@mail.ru Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
Ответить
Сообщение Ну так бы сразу и сказали Запускаете вот это и не нужно ничего никуда копировать. Только диапазон свой поставьте. Можно с запасом [vba]Код
Range("b2:c555").FormulaLocal = Range("b2:c555").FormulaLocal
[/vba] И вот здесь почитайте http://www.excelworld.ru/forum/3-5329-54217-16-1373268845 Там как раз говорится, что сложение с 0 (что, фактически, то же самое, что и умножению на 1) работает не всегда. Автор - _Boroda_ Дата добавления - 09.06.2015 в 12:55
rever27
Дата: Вторник, 09.06.2015, 13:14 |
Сообщение № 10
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 141
Репутация:
0
±
Замечаний:
20% ±
Excel 2010
Manyasha , это вариант хорош, если нужно округление. Мне нужно оставить значения после запятых, как есть. _Boroda_ , Ничего не понимаю, отказывается работать в книге и все тут
Manyasha , это вариант хорош, если нужно округление. Мне нужно оставить значения после запятых, как есть. _Boroda_ , Ничего не понимаю, отказывается работать в книге и все тутrever27
Ответить
Сообщение Manyasha , это вариант хорош, если нужно округление. Мне нужно оставить значения после запятых, как есть. _Boroda_ , Ничего не понимаю, отказывается работать в книге и все тутАвтор - rever27 Дата добавления - 09.06.2015 в 13:14
Manyasha
Дата: Вторник, 09.06.2015, 13:33 |
Сообщение № 11
Группа: Модераторы
Ранг: Старожил
Сообщений: 2198
Репутация:
898
±
Замечаний:
0% ±
Excel 2010, 2016
rever27 , пробуйте еще раз. В файле 2 варианта: от меня и от Александра ( _Boroda_ ), оба повесила на клавиши. Перед запуском выделите нужный диапазон.
rever27 , пробуйте еще раз. В файле 2 варианта: от меня и от Александра ( _Boroda_ ), оба повесила на клавиши. Перед запуском выделите нужный диапазон.Manyasha
ЯД: 410013299366744 WM: R193491431804
Ответить
Сообщение rever27 , пробуйте еще раз. В файле 2 варианта: от меня и от Александра ( _Boroda_ ), оба повесила на клавиши. Перед запуском выделите нужный диапазон.Автор - Manyasha Дата добавления - 09.06.2015 в 13:33
_Boroda_
Дата: Вторник, 09.06.2015, 13:51 |
Сообщение № 12
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16675
Репутация:
6481
±
Замечаний:
0% ±
2003; 2007; 2010; 2013 RUS
Марин, только лучше реплэйсить не так [vba]Код
Selection.Replace ".", ","
[/vba] а так [vba]Код
Selection.Replace ".", "."
[/vba] Тогда должно работать независимо от установок Ну или [vba]Код
Selection.Replace ".", Application.DecimalSeparator
[/vba]
Марин, только лучше реплэйсить не так [vba]Код
Selection.Replace ".", ","
[/vba] а так [vba]Код
Selection.Replace ".", "."
[/vba] Тогда должно работать независимо от установок Ну или [vba]Код
Selection.Replace ".", Application.DecimalSeparator
[/vba] _Boroda_
Скажи мне, кудесник, любимец ба’гов... Платная помощь: Boroda_Excel@mail.ru Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
Ответить
Сообщение Марин, только лучше реплэйсить не так [vba]Код
Selection.Replace ".", ","
[/vba] а так [vba]Код
Selection.Replace ".", "."
[/vba] Тогда должно работать независимо от установок Ну или [vba]Код
Selection.Replace ".", Application.DecimalSeparator
[/vba] Автор - _Boroda_ Дата добавления - 09.06.2015 в 13:51
rever27
Дата: Вторник, 09.06.2015, 14:38 |
Сообщение № 13
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 141
Репутация:
0
±
Замечаний:
20% ±
Excel 2010
Наверное, я не умею изъясняться ) [vba]Код
Selection.Replace ".", "." Selection.NumberFormat = "0.00" Selection.FormulaLocal = Selection.FormulaLocal
[/vba] это вариант поставит 2 нуля после моих цифр. У меня же диапазон состоит и из целого числа, и дробного, и процентов. [vba]Код
Range("b2:c555").FormulaLocal = Range("b2:c555").FormulaLocal
[/vba] Этот пример не работает на последнем, приложенном мною образце.
Наверное, я не умею изъясняться ) [vba]Код
Selection.Replace ".", "." Selection.NumberFormat = "0.00" Selection.FormulaLocal = Selection.FormulaLocal
[/vba] это вариант поставит 2 нуля после моих цифр. У меня же диапазон состоит и из целого числа, и дробного, и процентов. [vba]Код
Range("b2:c555").FormulaLocal = Range("b2:c555").FormulaLocal
[/vba] Этот пример не работает на последнем, приложенном мною образце. rever27
Ответить
Сообщение Наверное, я не умею изъясняться ) [vba]Код
Selection.Replace ".", "." Selection.NumberFormat = "0.00" Selection.FormulaLocal = Selection.FormulaLocal
[/vba] это вариант поставит 2 нуля после моих цифр. У меня же диапазон состоит и из целого числа, и дробного, и процентов. [vba]Код
Range("b2:c555").FormulaLocal = Range("b2:c555").FormulaLocal
[/vba] Этот пример не работает на последнем, приложенном мною образце. Автор - rever27 Дата добавления - 09.06.2015 в 14:38
_Boroda_
Дата: Вторник, 09.06.2015, 14:46 |
Сообщение № 14
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16675
Репутация:
6481
±
Замечаний:
0% ±
2003; 2007; 2010; 2013 RUS
А Вы диапазоны поменяли? Вот так у меня работает [vba]Код
Sub tt() Range("P12:Q18").Replace ".", Application.DecimalSeparator Range("P12:Q18").FormulaLocal = Range("P12:Q18").FormulaLocal End Sub
[/vba]
А Вы диапазоны поменяли? Вот так у меня работает [vba]Код
Sub tt() Range("P12:Q18").Replace ".", Application.DecimalSeparator Range("P12:Q18").FormulaLocal = Range("P12:Q18").FormulaLocal End Sub
[/vba] _Boroda_
Скажи мне, кудесник, любимец ба’гов... Платная помощь: Boroda_Excel@mail.ru Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
Ответить
Сообщение А Вы диапазоны поменяли? Вот так у меня работает [vba]Код
Sub tt() Range("P12:Q18").Replace ".", Application.DecimalSeparator Range("P12:Q18").FormulaLocal = Range("P12:Q18").FormulaLocal End Sub
[/vba] Автор - _Boroda_ Дата добавления - 09.06.2015 в 14:46
rever27
Дата: Вторник, 09.06.2015, 15:00 |
Сообщение № 15
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 141
Репутация:
0
±
Замечаний:
20% ±
Excel 2010
Никогда не думаю, что мы будем весь день сидеть над такой проблемкой ))))) Вот выложил мой образец с вашей последней формулой. и он не работает. Диапазон меняющийся
Никогда не думаю, что мы будем весь день сидеть над такой проблемкой ))))) Вот выложил мой образец с вашей последней формулой. и он не работает. Диапазон меняющийся rever27
Ответить
Сообщение Никогда не думаю, что мы будем весь день сидеть над такой проблемкой ))))) Вот выложил мой образец с вашей последней формулой. и он не работает. Диапазон меняющийся Автор - rever27 Дата добавления - 09.06.2015 в 15:00
rever27
Дата: Вторник, 09.06.2015, 16:14 |
Сообщение № 16
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 141
Репутация:
0
±
Замечаний:
20% ±
Excel 2010
Нет никакого издевательства. Есть проблема, решение которой я хочу получить у более обычных пользователей. [vba]Код
Sub tt() CurrentStart = ActiveCell.Row TheEnd = Cells(ActiveCell.Row, 17).End(xlDown).Row Range(Cells(CurrentStart, 16), Cells(TheEnd, 23)).Replace ".", Application.DecimalSeparator Range(Cells(CurrentStart, 16), Cells(TheEnd, 23)).FormulaLocal = Range(Cells(CurrentStart, 16), Cells(TheEnd, 23)).FormulaLocal End Sub
[/vba] В приложенном мною примере я выложил этот код, с моими Актив Сэллами. Он не работает, вот я и хочу понять - в чем проблема Не работает и Ваш вариант со статическим диапазоном для моего примера [vba]Код
Sub tt2() Range("P40:W50").Replace ".", Application.DecimalSeparator Range("P40:W50").FormulaLocal = Range("P40:W50").FormulaLocal End Sub
[/vba]
Нет никакого издевательства. Есть проблема, решение которой я хочу получить у более обычных пользователей. [vba]Код
Sub tt() CurrentStart = ActiveCell.Row TheEnd = Cells(ActiveCell.Row, 17).End(xlDown).Row Range(Cells(CurrentStart, 16), Cells(TheEnd, 23)).Replace ".", Application.DecimalSeparator Range(Cells(CurrentStart, 16), Cells(TheEnd, 23)).FormulaLocal = Range(Cells(CurrentStart, 16), Cells(TheEnd, 23)).FormulaLocal End Sub
[/vba] В приложенном мною примере я выложил этот код, с моими Актив Сэллами. Он не работает, вот я и хочу понять - в чем проблема Не работает и Ваш вариант со статическим диапазоном для моего примера [vba]Код
Sub tt2() Range("P40:W50").Replace ".", Application.DecimalSeparator Range("P40:W50").FormulaLocal = Range("P40:W50").FormulaLocal End Sub
[/vba] rever27
Сообщение отредактировал rever27 - Вторник, 09.06.2015, 16:16
Ответить
Сообщение Нет никакого издевательства. Есть проблема, решение которой я хочу получить у более обычных пользователей. [vba]Код
Sub tt() CurrentStart = ActiveCell.Row TheEnd = Cells(ActiveCell.Row, 17).End(xlDown).Row Range(Cells(CurrentStart, 16), Cells(TheEnd, 23)).Replace ".", Application.DecimalSeparator Range(Cells(CurrentStart, 16), Cells(TheEnd, 23)).FormulaLocal = Range(Cells(CurrentStart, 16), Cells(TheEnd, 23)).FormulaLocal End Sub
[/vba] В приложенном мною примере я выложил этот код, с моими Актив Сэллами. Он не работает, вот я и хочу понять - в чем проблема Не работает и Ваш вариант со статическим диапазоном для моего примера [vba]Код
Sub tt2() Range("P40:W50").Replace ".", Application.DecimalSeparator Range("P40:W50").FormulaLocal = Range("P40:W50").FormulaLocal End Sub
[/vba] Автор - rever27 Дата добавления - 09.06.2015 в 16:14
Manyasha
Дата: Вторник, 09.06.2015, 17:08 |
Сообщение № 17
Группа: Модераторы
Ранг: Старожил
Сообщений: 2198
Репутация:
898
±
Замечаний:
0% ±
Excel 2010, 2016
rever27 , вариант с FormulaLocal не будет работать, если формат ячеек текстовый. Либо меняйте вручную, либо в макросе. Если Вам не нравится числовой (из-за разного количества цифр после запятой), поставьте общий: [vba]Код
With Range("P40:W50") .Replace ".", Application.DecimalSeparator .NumberFormat = "General" .FormulaLocal = Range("P40:W50").FormulaLocal End With
[/vba]
rever27 , вариант с FormulaLocal не будет работать, если формат ячеек текстовый. Либо меняйте вручную, либо в макросе. Если Вам не нравится числовой (из-за разного количества цифр после запятой), поставьте общий: [vba]Код
With Range("P40:W50") .Replace ".", Application.DecimalSeparator .NumberFormat = "General" .FormulaLocal = Range("P40:W50").FormulaLocal End With
[/vba]Manyasha
ЯД: 410013299366744 WM: R193491431804
Ответить
Сообщение rever27 , вариант с FormulaLocal не будет работать, если формат ячеек текстовый. Либо меняйте вручную, либо в макросе. Если Вам не нравится числовой (из-за разного количества цифр после запятой), поставьте общий: [vba]Код
With Range("P40:W50") .Replace ".", Application.DecimalSeparator .NumberFormat = "General" .FormulaLocal = Range("P40:W50").FormulaLocal End With
[/vba]Автор - Manyasha Дата добавления - 09.06.2015 в 17:08
rever27
Дата: Вторник, 09.06.2015, 17:40 |
Сообщение № 18
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 141
Репутация:
0
±
Замечаний:
20% ±
Excel 2010
Manyasha , _Boroda_ , Спасибо большое за помощь! Мыслей оскорбить модераторов не было. Как я понимаю, мой изначальный вариант был универсальный. Решил для каждой колонки в выделенном диапазоне задать свое форматирование ячейки. Получилось: [vba]Код
Sub b_Text_to_N2umber() CurrentStart = ActiveCell.Row TheEnd = IIf(Cells(ActiveCell.Row, 17).Offset(1) = "", ActiveCell.Row, Cells(ActiveCell.Row, 17).End(xlDown).Row) Range(Cells(CurrentStart, 16), Cells(TheEnd, 23)).Replace ".", Application.DecimalSeparator Range(Cells(CurrentStart, 16), Cells(TheEnd, 16)).NumberFormat = "0" Range(Cells(CurrentStart, 17), Cells(TheEnd, 17)).NumberFormat = "0.00" Range(Cells(CurrentStart, 18), Cells(TheEnd, 18)).NumberFormat = "0" Range(Cells(CurrentStart, 19), Cells(TheEnd, 19)).NumberFormat = "0.00" Range(Cells(CurrentStart, 20), Cells(TheEnd, 20)).NumberFormat = "0.0" Range(Cells(CurrentStart, 21), Cells(TheEnd, 21)).NumberFormat = "0.00" Range(Cells(CurrentStart, 22), Cells(TheEnd, 22)).NumberFormat = "0.0%" Range(Cells(CurrentStart, 23), Cells(TheEnd, 23)).NumberFormat = "0.00" End Sub
[/vba] либо же можно сократить до: [vba]Код
Sub b_Text_to_N2umber() CurrentStart = ActiveCell.Row TheEnd = IIf(Cells(ActiveCell.Row, 17).Offset(1) = "", ActiveCell.Row, Cells(ActiveCell.Row, 17).End(xlDown).Row) Range(Cells(CurrentStart, 16), Cells(TheEnd, 23)).Replace ".", Application.DecimalSeparator With Range(Cells(CurrentStart, 16), Cells(TheEnd, 16)) .NumberFormat = "0" .Offset(, 1).NumberFormat = "0.00" .Offset(, 2).NumberFormat = "0" .Offset(, 3).NumberFormat = "0.00" .Offset(, 4).NumberFormat = "0.0" .Offset(, 5).NumberFormat = "0.00" .Offset(, 6).NumberFormat = "0.0%" .Offset(, 7).NumberFormat = "0.00" End With End Sub
[/vba] Подскажите, возможно ли еще как то сократить данный макрос? И я тут не учел .FormulaLocal Нужен ли он вообще тут и зачем?
Manyasha , _Boroda_ , Спасибо большое за помощь! Мыслей оскорбить модераторов не было. Как я понимаю, мой изначальный вариант был универсальный. Решил для каждой колонки в выделенном диапазоне задать свое форматирование ячейки. Получилось: [vba]Код
Sub b_Text_to_N2umber() CurrentStart = ActiveCell.Row TheEnd = IIf(Cells(ActiveCell.Row, 17).Offset(1) = "", ActiveCell.Row, Cells(ActiveCell.Row, 17).End(xlDown).Row) Range(Cells(CurrentStart, 16), Cells(TheEnd, 23)).Replace ".", Application.DecimalSeparator Range(Cells(CurrentStart, 16), Cells(TheEnd, 16)).NumberFormat = "0" Range(Cells(CurrentStart, 17), Cells(TheEnd, 17)).NumberFormat = "0.00" Range(Cells(CurrentStart, 18), Cells(TheEnd, 18)).NumberFormat = "0" Range(Cells(CurrentStart, 19), Cells(TheEnd, 19)).NumberFormat = "0.00" Range(Cells(CurrentStart, 20), Cells(TheEnd, 20)).NumberFormat = "0.0" Range(Cells(CurrentStart, 21), Cells(TheEnd, 21)).NumberFormat = "0.00" Range(Cells(CurrentStart, 22), Cells(TheEnd, 22)).NumberFormat = "0.0%" Range(Cells(CurrentStart, 23), Cells(TheEnd, 23)).NumberFormat = "0.00" End Sub
[/vba] либо же можно сократить до: [vba]Код
Sub b_Text_to_N2umber() CurrentStart = ActiveCell.Row TheEnd = IIf(Cells(ActiveCell.Row, 17).Offset(1) = "", ActiveCell.Row, Cells(ActiveCell.Row, 17).End(xlDown).Row) Range(Cells(CurrentStart, 16), Cells(TheEnd, 23)).Replace ".", Application.DecimalSeparator With Range(Cells(CurrentStart, 16), Cells(TheEnd, 16)) .NumberFormat = "0" .Offset(, 1).NumberFormat = "0.00" .Offset(, 2).NumberFormat = "0" .Offset(, 3).NumberFormat = "0.00" .Offset(, 4).NumberFormat = "0.0" .Offset(, 5).NumberFormat = "0.00" .Offset(, 6).NumberFormat = "0.0%" .Offset(, 7).NumberFormat = "0.00" End With End Sub
[/vba] Подскажите, возможно ли еще как то сократить данный макрос? И я тут не учел .FormulaLocal Нужен ли он вообще тут и зачем?rever27
Ответить
Сообщение Manyasha , _Boroda_ , Спасибо большое за помощь! Мыслей оскорбить модераторов не было. Как я понимаю, мой изначальный вариант был универсальный. Решил для каждой колонки в выделенном диапазоне задать свое форматирование ячейки. Получилось: [vba]Код
Sub b_Text_to_N2umber() CurrentStart = ActiveCell.Row TheEnd = IIf(Cells(ActiveCell.Row, 17).Offset(1) = "", ActiveCell.Row, Cells(ActiveCell.Row, 17).End(xlDown).Row) Range(Cells(CurrentStart, 16), Cells(TheEnd, 23)).Replace ".", Application.DecimalSeparator Range(Cells(CurrentStart, 16), Cells(TheEnd, 16)).NumberFormat = "0" Range(Cells(CurrentStart, 17), Cells(TheEnd, 17)).NumberFormat = "0.00" Range(Cells(CurrentStart, 18), Cells(TheEnd, 18)).NumberFormat = "0" Range(Cells(CurrentStart, 19), Cells(TheEnd, 19)).NumberFormat = "0.00" Range(Cells(CurrentStart, 20), Cells(TheEnd, 20)).NumberFormat = "0.0" Range(Cells(CurrentStart, 21), Cells(TheEnd, 21)).NumberFormat = "0.00" Range(Cells(CurrentStart, 22), Cells(TheEnd, 22)).NumberFormat = "0.0%" Range(Cells(CurrentStart, 23), Cells(TheEnd, 23)).NumberFormat = "0.00" End Sub
[/vba] либо же можно сократить до: [vba]Код
Sub b_Text_to_N2umber() CurrentStart = ActiveCell.Row TheEnd = IIf(Cells(ActiveCell.Row, 17).Offset(1) = "", ActiveCell.Row, Cells(ActiveCell.Row, 17).End(xlDown).Row) Range(Cells(CurrentStart, 16), Cells(TheEnd, 23)).Replace ".", Application.DecimalSeparator With Range(Cells(CurrentStart, 16), Cells(TheEnd, 16)) .NumberFormat = "0" .Offset(, 1).NumberFormat = "0.00" .Offset(, 2).NumberFormat = "0" .Offset(, 3).NumberFormat = "0.00" .Offset(, 4).NumberFormat = "0.0" .Offset(, 5).NumberFormat = "0.00" .Offset(, 6).NumberFormat = "0.0%" .Offset(, 7).NumberFormat = "0.00" End With End Sub
[/vba] Подскажите, возможно ли еще как то сократить данный макрос? И я тут не учел .FormulaLocal Нужен ли он вообще тут и зачем?Автор - rever27 Дата добавления - 09.06.2015 в 17:40
AndreTM
Дата: Среда, 10.06.2015, 10:56 |
Сообщение № 19
Группа: Друзья
Ранг: Старожил
Сообщений: 1762
Репутация:
500
±
Замечаний:
0% ±
2003 & 2010
А я бы наоборот, макрос бы написал побольше, но другой... А давайте будем плясать от того, что поменяем входные данные. Ведь бьетесь с тем, что наделал Excel при автоматической копипасте неизвестно чего неизвестно куда... А ведь можно либо проконтролировать процесс импорта, написав собственную процедуру открытия файла - чтения/преобразования - записи на лист; либо предварительно исходные данные выгрузить в такой формат, чтобы он не допускал разночтения при открытии Excel'ем. Вообще, если хотите быть уверены в достоверности прочитанных данных - контролируйте все этапы процесса, не надо надеяться на автоматику преобразования Excel, ненашенскую логику она использует Это я все к тому, что не надо сначала плодить проблемы, а потом их мужественно решать ))
А я бы наоборот, макрос бы написал побольше, но другой... А давайте будем плясать от того, что поменяем входные данные. Ведь бьетесь с тем, что наделал Excel при автоматической копипасте неизвестно чего неизвестно куда... А ведь можно либо проконтролировать процесс импорта, написав собственную процедуру открытия файла - чтения/преобразования - записи на лист; либо предварительно исходные данные выгрузить в такой формат, чтобы он не допускал разночтения при открытии Excel'ем. Вообще, если хотите быть уверены в достоверности прочитанных данных - контролируйте все этапы процесса, не надо надеяться на автоматику преобразования Excel, ненашенскую логику она использует Это я все к тому, что не надо сначала плодить проблемы, а потом их мужественно решать )) AndreTM
Skype: andre.tm.007 Donate: Q iwi: 9517375010
Ответить
Сообщение А я бы наоборот, макрос бы написал побольше, но другой... А давайте будем плясать от того, что поменяем входные данные. Ведь бьетесь с тем, что наделал Excel при автоматической копипасте неизвестно чего неизвестно куда... А ведь можно либо проконтролировать процесс импорта, написав собственную процедуру открытия файла - чтения/преобразования - записи на лист; либо предварительно исходные данные выгрузить в такой формат, чтобы он не допускал разночтения при открытии Excel'ем. Вообще, если хотите быть уверены в достоверности прочитанных данных - контролируйте все этапы процесса, не надо надеяться на автоматику преобразования Excel, ненашенскую логику она использует Это я все к тому, что не надо сначала плодить проблемы, а потом их мужественно решать )) Автор - AndreTM Дата добавления - 10.06.2015 в 10:56