Замена и преобразование в макросе (Microsoft Excel)
У Саскии возникла проблема с преобразованием информации под управлением макроса, и она по-прежнему могла использоваться в Excel. Когда она получала рабочий лист с числами, отформатированными с десятичными точками, ей нужно было преобразовать значения, чтобы они использовали десятичные запятые, в соответствии с тем, как числа отображаются в Голландии. Сделала бы поиск и замену, и все было бы нормально. Однако, когда она записала макрос, который выполнял поиск и замену, полученные ячейки обрабатывались как текст, а не как числовые значения.
Причина такого поведения в том, что Excel VBA «говорит» по-американски, и некоторые действия, выполняемые с использованием записанного макроса, не работают должным образом из-за этого. Поскольку American Excel ожидает, что десятичный разделитель будет точкой, интерпретация «числа» в VBA с другим разделителем (например, запятой) приведет к тому, что Excel будет рассматривать значение как текст.
Обходной путь — не использовать поиск и замену, а использовать другой прием. Рассмотрим следующий короткий макрос:
Sub ConvertNumbers() Dim oConRange As Range Set oConRange = ActiveSheet.UsedRange.Cells.SpecialCells(xlConstants) oConRange.Value = oConRange.Value End Sub
Этот макрос определяет диапазон, состоящий из всех ячеек, содержащих константы. Затем он устанавливает значение каждой ячейки в диапазоне, равное самому себе. В процессе этого Excel повторно оценивает содержимое каждой ячейки и преобразует его в соответствующее числовое значение. Другими словами, числа, содержащие десятичные точки, преобразуются в числа, содержащие десятичные запятые.
Есть и другие способы обработки ячеек с помощью макроса, но описанная выше процедура, по-видимому, работает лучше всего и быстрее всего.
_Примечание: _
Если вы хотите узнать, как использовать макросы, описанные на этой странице (или на любой другой странице на сайтах ExcelTips), я подготовил специальную страницу, содержащую полезную информацию.
link: / excelribbon-ExcelTipsMacros [Щелкните здесь, чтобы открыть эту специальную страницу в новой вкладке браузера]
.
ExcelTips — ваш источник экономичного обучения Microsoft Excel.
Этот совет (2291) относится к Microsoft Excel 97, 2000, 2002 и 2003. Вы можете найти версию этого совета для ленточного интерфейса Excel (Excel 2007 и новее) здесь:
link: / excelribbon-Replacing_and_Converting_in_a_Macro [Замена и преобразование в макросе]
.