Увеличить/Уменьшить количество десятичных знаков группы ячеек без изменения формата

Я начал изучать макросы несколько недель назад и в настоящее время застрял в этой задаче.

Я хотел бы создать макрос, а затем связать его с ярлыком, который увеличивает/уменьшает десятичную дробь на единицу для выбранных мной ячеек, не меняя формат ячеек, если между ними разный формат.

Я хочу, чтобы макрос делал, например:

Если я выбрал ячейки A1 и B1, содержащие 10,0% и 1,0 соответственно. Запустив макрос через ярлык (например, «Ctrl + »,») значения ячеек увеличиться на один десятичный знак до 10,00% и 1,00.

Мне также хотелось бы, чтобы при использовании другого сочетания клавиш (например, «Ctrl + .») уменьшалось количество десятичных знаков в выбранных ячейках до 10% и 1.

Мне удалось только увеличивать/уменьшать десятичные дроби, но формат одной из ячеек меняется на %, учитывая, что это формат первой ячейки (A1).

В заключение хотелось бы, чтобы макрос увеличивал/уменьшал десятичные точки без изменения формата, каким бы он ни был.

Я знаю, что мне нужно иметь два отдельных макроса: один для увеличения десятичных знаков и один для уменьшения, но я не нашел решения своей проблемы в Интернете.

Заранее спасибо.

Есть ли причина, по которой встроенные кнопки и ярлыки Excel не соответствуют вашим потребностям? Кнопки на главной вкладке Excel или сочетания клавиш «Alt + H, 9» и Alt + H, 0» уменьшают и увеличивают десятичные точки без изменения других параметров форматирования.

Michael Murphy 05.07.2024 19:57

Если вы добавите к значению ячейки «лишние» нули, Excel не отобразит их, если они противоречат формату ячейки. Может быть, вы сможете объяснить причину, по которой вам нужна именно эта функция?

Tim Williams 05.07.2024 20:10

Работа таких ярлыков, как Alt + H, 9, зависит от версии Excel (в том числе и от языка), причем в случае нескольких ячеек, отформатированных по-разному, форматирование унифицируется в соответствии с активной ячейкой.

MGonet 05.07.2024 23:10
Преобразование HTML-таблицы в профессиональный документ Excel
Преобразование HTML-таблицы в профессиональный документ Excel
Это самый простой способ создания Excel из HTML-таблицы.
Импорт excel в laravel в базу данных
Импорт excel в laravel в базу данных
Здравствуйте, дорогой читатель, в этой статье я расскажу практическим и быстрым способом, как импортировать файл Excel в вашу базу данных с помощью...
3
3
59
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Мой макрос использует команду CommandBars. К сожалению, корректно работает только с системными настройками США (десятичная точка). Если вы используете другую локаль, вам нужно на время ее сменить. Если у вас настройки для США, вы можете пропустить эти изменения.

Sub ChangeDec(action As Long)
    ' action = 13 => increase
    ' action = 14 => decrease
    Dim cell As Range, sel As Range
    Set sel = Selection
    With Application
        .ScreenUpdating = False
        .DecimalSeparator = "."
        .ThousandsSeparator = ","
        .UseSystemSeparators = False
        For Each cell In sel
            cell.Select
            .CommandBars("Formatting").Controls(action).Execute
        Next cell
        sel.Select
        .UseSystemSeparators = True
        .ScreenUpdating = True
    End With
End Sub

Дополнительные процедуры по настройке сочетаний клавиш.

Sub Definekeys()
   Application.OnKey "^,", "'ChangeDec 13'"   ' apostrophes are needed
   Application.OnKey "^.", "'ChangeDec 14'"
End Sub
Sub Undefinekeys()
   Application.OnKey "^,"
   Application.OnKey "^."
End Sub

Спасибо @MGonet, это решило мой вопрос!

Benjamin Delgado 09.07.2024 17:43

Другие вопросы по теме