excel文件打开时 vba满足条件d窗提醒

excel文件打开时 vba满足条件d窗提醒,第1张

注意工作表名的写法:

一、用工作表的大名写:

Private Sub Workbook_Open() 

  If ApplicationCountIfs(Sheet1Columns("B"), ">25", Sheet1Columns("C"), "否") Then MsgBox "请进行报备", 48

End Sub

二、用工作表的小名写:

Private Sub Workbook_Open()

  If ApplicationCountIfs(Sheets("月报表")Columns("B"), ">25", Sheets("月报表")Columns("C"), "否") Then MsgBox "请进行报备", 48

End Sub

三、提示:注意上面的工作表名的两种写法。

用工作表的大名,好处是大名不会变化,比如后续更改了工作表名称,则不用改代码。

用工作表的小名,如果你后续更改了工作表名称,则需要同时修改原来写在代码里的工作表名称。

这不是设置问题,是软件本身就是这样设计的,这样的情况还有很多。我遇到这种情况采用的方法是:如果键入点后没有提示,就来一个空格,然后输入常用同类对象作替身,点后就会有提示,完成后删除替身。就你这个活动表来说,空格后输入sheet1 就VBA编程时部分对象没有提示

'定义了ABC三列要输入内容 Dim X As Long Private Sub Worksheet_Change(ByVal Target As Range) If TargetColumn <= 3 Then X = TargetRow End If End Sub Private Sub Worksheet_SelectionChange(ByVal Target As Range) If X = 0 Then Exit Sub If TargetRow <> X Then For i = 1 To 3 If Cells(X, i) = "" Then MsgBox "同一行内还有内元格未录入!" End If Next i End If End Sub

获取键盘信息

2942 获取键盘信息

在VBA中,没有提供获取键盘状态函数。在程序中若需要查询键盘状态,可编写代码调用API函数节器完成。

1.GetKeyState函数

使用该函数可获取键盘锁定键的状态,函数原型如下:

Public Declare Function GetKeyState Lib

"user32" (ByVal nVirtKey As Long) As Integer

参数nVirtKey为需要获取状态的键常数,在VBA中,每个键都有一个对应的常数,例如,CapsLock键的常数为vbKeyCapital。

该函数返回值为一个整型值,如果最低位为1,则表示锁定键是打开的,因此可以使用以下代码来判断:

CBool(GetKeyState(vbKeyCapital) And 1)

将GetKeyState函数的返回值与整数1进行逻辑与运算,来取得返回值的最低位,然后通过CBool函数将其转换为逻辑值,即可得到指定锁定键的状态。

2.GetKeyboardState函数和SetKeyboardState函数

设置锁定键状态需使用GetKeyboardState和SetKeyboardState函数来 *** 作。这两个函数都用一个256字节缓冲区取得或设置256个键设置,在VBA中设置一个有256个元素的字节数组来作为缓冲区,这个数组记录着键盘状态,每个键在数组中的位置由VK_常数决定。

一旦用GetKeyboardState函数取得键盘各键状态并存储到缓冲区中后,即可修改特定的键设置,然后用SetKeyboardState函数存回设置,达到修改键设置的目的。

GetKeyboardState函数可取得键盘上每个虚拟键当前的状态,其函数原型如下:

Declare Function GetKeyboardState

Lib "user32" Alias "GetKeyboardState" _

(pbKeyState As Byte) As Long

参数pbKeyState为具有256个元素的字节数组的第一个项目。

如果函数返回非0表示成功,返回0则表示失败。

SetKeyboardState函数用来设置每个虚拟键当前在键盘上的状态,其声明格式如下:

Declare Function SetKeyboardState Lib

"user32" Alias "SetKeyboardState" _

(lppbKeyState As Byte) As Long

了解设置键盘状态的函数后,就可以在VBA中编写代码,用来设置锁定键的状态。具体步骤如下:

(1)在Excel中按快捷键Alt+F11进入VBE。

(2)单击菜单插入|模块命令,向工程中插入一个模块体。

(3)在模块的声明部分粘贴API函数的定义如下:

Public Declare Function GetKeyState Lib

"user32" (ByVal nVirtKey As Long) As Integer

Public Declare Function GetKeyboardState

Lib "user32" (pbKeyState As Byte) As Long

Public Declare Function SetKeyboardState

Lib "user32" (lppbKeyState As Byte) As Long

(4)编写修改锁定键状态的通用子过程,具体代码如下:

Sub SetKeyState(intVKey As Integer, bState As Boolean) '修改键盘状态

Dim aBuffer(0 To 255) As Byte '定义数组作为缓冲区

GetKeyboardState aBuffer(0) '获取键盘状态放入缓冲区

aBuffer(intVKey) = CByte(Abs(bState)) '在缓冲区修改指定键的状态

SetKeyboardState aBuffer(0) '使用缓冲区修改键的状态

End Sub

程序中使用数组的第一个元素作为参数传递给两个API函数,由于数组在VBA中是连续存放的,所以API函数通过第一个元素的地址就可访问到后面的所有元素。

(5)有了通用函数SetKeyState,就可以很方便地编写修改锁定键状态的代码了。例如,以下代码可修改CapsLock键的状态(在大小写之间相互切换):

Sub ModiCapsLock() '大写锁定

If CBool(GetKeyState(vbKeyCapital) And 1)

Then '获取CapsLock原来的状态

SetKeyState vbKeyCapital, False '关闭

Else

SetKeyState vbKeyCapital, True '打开

End If

End Sub

程序首先使用GetKeyState函数查询CapsLock原来的状态,再将其状态进行切换(即如果原来是打开的,就将其关闭;如果原来是关闭的,就将其打开)。

1、首先vba,并登录账号。

2、其次进行在左侧的工程资源管理器窗口中,用鼠标右键单击“VBAProject(test111)",在d出的菜单中选择插入|模块。

3、最后就可以进行 *** 作完成了。

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

    If TargetCellsCount > 1 Then Exit Sub '如果目标单元格多于一个,则退出

    If TargetColumn > 1 Then Exit Sub '如果目标单元格不在A列,则退出

    If TargetRow < 10 Then Exit Sub '如果目标单元格在A10以上,则退出

    

    If InStr(TargetValue, [a1]) = 0 Then '如果目标单元格中的数据不包含A1中的固定内容,则

        TargetOffset(0, 1) = "数据错误" '在B列单元格内显示数据错误

        MsgBox ("数据错误") '并d出msgbox报错

        TargetClearContents '然后删除目标单元格内的数据

    Else

        TargetOffset(0, 1) = "OK" '如果一致,则显示OK

    End If

End Sub

你先看看在存盘对话框中完全用键盘是如果 *** 作的(不要用鼠标),然后在VB中模拟这种 *** 作即可。

比如下面的代码模拟的是这样的过程:按Tab键,输入文件路径和名称,再按Tab键,然后按两次向下的光标键选择文件类型,最后按回车键确认保存:

SendKeys "{tab}d:\xxx\abctxt{tab}{down 2}{enter}"

如果文件名是由变量引入的,则这样:

SendKeys "{tab}" & filename & "{tab}{down 2}{enter}"

当然,以上只是例子,跟你遇到的存盘对话框不一定相符,要根据实际情况来修改。

以上就是关于excel文件打开时 vba满足条件d窗提醒全部的内容,包括:excel文件打开时 vba满足条件d窗提醒、VBA编程时部分对象没有提示、vba 利用输入数据无效提示框作为条件,选择执行比如把此数据加入有效序列等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9607671.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-30
下一篇2023-04-30

发表评论

登录后才能评论

评论列表(0条)

    保存