Q:我想在代码中就能确定大写锁定键或者数字键盘键的状态,以便适当地提醒用户这些键已经开启或者应该开启,怎么编写代码?
A:可以借助于Windows API来取得键盘相应键的状态,代码如下:
‘API声明
Private Declare Function GetKeyState Lib “user32” (ByVal nVirtKey As Long) As Integer
‘定义键编码常量
‘大写锁定键编码常量
Private Const GetCapsLock = 2
‘数字键盘键编码常量
Private Const GetNumLock = 144
‘获取大写锁定键状态
Public Function CapsLock() As Boolean
CapsLock = KeyState(GetCapsLock)
End Function
‘获取数字键盘键状态
Public Function NumLock() As Boolean
NumLock = KeyState(GetNumLock)
如何统计唯一的日期或时间?
Q:经常看到统计唯一值的公式,但统计的数据要么为数字,要么为文本。如果我想要统计的数据全是日期,如何统计这些日期中的唯一值?如下所示,列A中的单元格区域A1:A16中输入了带时间的日期,有些是重复的带时间的日期,如A1和A2中的值,有些是重复的日期,如A1、A2、A3、A4中的值,需要统计有多少个唯一的日期值,有多少个
End Function
‘获取指定键状态
Private Function KeyState(lKey As Long) As Boolean
KeyState = CBool(GetKeyState(lKey))
End Function
‘测试大写锁定键状态
Sub test()
If CapsLock Then
MsgBox “注意!你现在的大写锁定键是开启的.”, vbExclamation
Else
MsgBox “大写锁定未开启.”
End If
End Sub
运行上述代码中的test过程,如果开启了大写状态,那么会得到下所示的消息:
我们可以在程序中加入上述代码来测试相应键的状态。例如,在要求用户输入密码时,如果开启了大写锁定键,则可以提示用户大写锁定键已开启的信息,以免用户将小写字母输成了大写字母。
如何在关闭excel工作簿时不出现保存工作簿的提示?
Q:在使用Excel时,如果对工作表进行了修改但没有保存,在关闭该工作簿时就会出现下所示的信息提示框。能够在任何情况下关闭工作簿时避免出现这个提示框吗? A:我们知道,在VBA中,可以使用 Close方法关闭工作簿。例如,下面的语句关闭当前工作簿: ThisWorkbook.Close 然而,如果在上次保存后