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

Этот совет (12630) применим к Microsoft Excel 2007, 2010 и 2013. Вы можете найти версию этого совета для старого интерфейса меню Excel здесь:

link: / excel-Replacing_and_Converting_in_a_Macro [Замена и преобразование в макросе].