У Саскии возникла проблема с преобразованием информации под управлением макроса, и она по-прежнему могла использоваться в 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 [Замена и преобразование в макросе].