罗伯特指出,在“加快日期”字段中,如果按加号或减号,则日期会增加或减少一天。他想在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_网站上的任何其他页面)中描述的宏,我准备了一个特殊页面,其中包含有用的信息。

_ExcelTips_是您进行经济高效的Microsoft Excel培训的来源。

本技巧(7197)适用于Microsoft Excel 97、2000、2002和2003。