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

Подойти к этой проблеме сложнее, чем можно было бы предположить, особенно в Excel. Поскольку действие должно выполняться при нажатии определенной клавиши (в данном случае клавиш «плюс» или «минус»), естественно предположить, что можно использовать метод OnKey. Рассмотрим следующие примеры:

Sub Start_OnKey()

Application.OnKey "{+}", "Plus1"

Application.OnKey "-", "Minus1"

End Sub
Sub End_OnKey()

Application.OnKey "{+}"

Application.OnKey "-"

End Sub
Sub Plus1()

If IsDate(ActiveCell) And Not ActiveCell.HasFormula Then         ActiveCell.Value = ActiveCell.Value + 1     End If End Sub
Sub Minus1()

If IsDate(ActiveCell) And Not ActiveCell.HasFormula Then         ActiveCell.Value = ActiveCell.Value - 1     End If End Sub

Согласно всей документации VBA, вышеуказанное должно работать нормально после запуска макроса Start_OnKey. Каждый раз, когда нажимается клавиша «плюс» или «минус», запускается соответствующая процедура для увеличения или уменьшения даты. Проблема в том, что он не будет работать в некоторых версиях Excel. Зачем? Потому что при нажатии клавиши «плюс» некоторые версии Excel, по-видимому, переводятся в специальный режим «ввода формулы», который обходит обычный буфер клавиатуры, на который полагается OnKey. Таким образом, нажатие клавиши «минус» при выделенной ячейке, содержащей дату, дает желаемый результат, нажатие клавиши «плюс» — нет.

Для тех версий Excel, где клавиша «плюс» является проблемой, единственное решение — изменить комбинации клавиш на что-то другое. Например, вы можете изменить нажатия клавиш так, чтобы Ctrl + u использовалось для увеличения даты, а Ctrl + d использовалось для уменьшения даты:

Sub Start_OnKey()

Application.OnKey "^u", "Plus1"

Application.OnKey "^d", "Minus1"

End Sub
Sub End_OnKey()

Application.OnKey "^u"

Application.OnKey "^d"

End Sub

_Примечание: _

Если вы хотите узнать, как использовать макросы, описанные на этой странице (или на любой другой странице на сайтах ExcelTips), я подготовил специальную страницу, содержащую полезную информацию.

link: / excelribbon-ExcelTipsMacros [Щелкните здесь, чтобы открыть эту специальную страницу в новой вкладке браузера].

ExcelTips — ваш источник экономичного обучения Microsoft Excel.

Этот совет (7197) применим к Microsoft Excel 97, 2000, 2002 и 2003.