Я начал изучать макросы несколько недель назад и в настоящее время застрял в этой задаче.
Я хотел бы создать макрос, а затем связать его с ярлыком, который увеличивает/уменьшает десятичную дробь на единицу для выбранных мной ячеек, не меняя формат ячеек, если между ними разный формат.
Я хочу, чтобы макрос делал, например:
Если я выбрал ячейки A1 и B1, содержащие 10,0% и 1,0 соответственно. Запустив макрос через ярлык (например, «Ctrl + »,») значения ячеек увеличиться на один десятичный знак до 10,00% и 1,00.
Мне также хотелось бы, чтобы при использовании другого сочетания клавиш (например, «Ctrl + .») уменьшалось количество десятичных знаков в выбранных ячейках до 10% и 1.
Мне удалось только увеличивать/уменьшать десятичные дроби, но формат одной из ячеек меняется на %, учитывая, что это формат первой ячейки (A1).
В заключение хотелось бы, чтобы макрос увеличивал/уменьшал десятичные точки без изменения формата, каким бы он ни был.
Я знаю, что мне нужно иметь два отдельных макроса: один для увеличения десятичных знаков и один для уменьшения, но я не нашел решения своей проблемы в Интернете.
Заранее спасибо.
Если вы добавите к значению ячейки «лишние» нули, Excel не отобразит их, если они противоречат формату ячейки. Может быть, вы сможете объяснить причину, по которой вам нужна именно эта функция?
Работа таких ярлыков, как Alt + H, 9
, зависит от версии Excel (в том числе и от языка), причем в случае нескольких ячеек, отформатированных по-разному, форматирование унифицируется в соответствии с активной ячейкой.
Мой макрос использует команду 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, это решило мой вопрос!
Есть ли причина, по которой встроенные кнопки и ярлыки Excel не соответствуют вашим потребностям? Кнопки на главной вкладке Excel или сочетания клавиш «Alt + H, 9» и Alt + H, 0» уменьшают и увеличивают десятичные точки без изменения других параметров форматирования.