Excel vba中怎样填写数值改变单元格后触发事件
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Excel vba中怎样填写数值改变单元格后触发事件相关的知识,希望对你有一定的参考价值。
假设要判断的值在A1,改变单元格后触发事件窗口填写代码如下:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$B$1" And [A1].Value > [B1].Value Then
Target.Interior.ColorIndex = 3Else
Target.Interior.ColorIndex = xlNone
End If
End Sub
注意一般加个IF来判断当前单元格量是否是指定的单元格,就是执行代码。
扩展资料:
vba中可以触发不同事件的命令:
Publicr/ Private] Const 常量名[As 类型]=表达式Global Const 符号常量名称 = 常量值,定义一个符号常量,并将指定表达式的值赋给符号常量。
常量名指定符号常量的名字。符号常量名可以由字母、数字和下划线组成,但只能以字母开头,不能含有空格,表达式指定符号常量的值。该表达式通常由数值型、字符型、逻辑型或日期型数据以及各种运算符组成,但在表达式中不能出现变量和函数。
public用来表示这个常量的作用范围是整个数据库的所有模块。
private则表示这个常量只在使用该声明常量语句的模块中起作用。
说明:
1、除用户定义的符号常量外,VBA还提供了许多符号常量,我们可以直接使用。
2、对数码比较长,并且在程序中多次使用的常量,通常使用符号常量代替。运行程序时,系统自动把程序中的所有符号常量换为赋给它的值。
参考资料来源:百度百科—VBA
参考技术A假设要判断的值在A1,则代码为:
Dim oldvalPrivate Sub Worksheet_Activate()
oldval = [a1]
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
If oldval <> [a1] Then
oldval = [a1]
'在此输入操作代码
End If
End Sub 参考技术B 1,按F9刷新数据,即便A1数据变了,也不能触发该事件;
2,选中其他单元格,即便A1数据变了,也不能触发该事件;
3,选中A1,B1没变动一次,都会触发该事件,而不管A1的值是不是改变了。 参考技术C
下列代码,粘贴在工作表代码窗格中
Private Sub Worksheet_Change(ByVal Target As Range)Application.EnableEvents = False
'你的代码语句
Application.EnableEvents = True
End Sub本回答被提问者和网友采纳 参考技术D Private Sub Worksheet_SelectionChange(ByVal Target As Range)
代码。。。
End Sub
EXCEL VBA 事件的问题。
Private Sub Worksheet_Change(ByVal Target As Range) 这是当工作表内容发生改变时产生的事件。
(ByVal Target As Range)的意思是什么?将发生变化的单元格记录在Target变量里,然后在代码中使用Target就能表示发生改变的单元格吗?
如果改为Byref有什么后果?
Target返回的就是发生改变的单元格集合对象,就是一个完全的Range对象
ByRef:默认情况下,VBA按地址(关键字ByRef)给Function过程(或Sub子过程序)传递信息,这时被调用的函数相用函数参数中特定的原始数据。因此,如果函数改变了参数的值,原始的数值也被改变了。如果想要Function过程改变原始数值,则不必专门在参数前加关键字ByRef,因为,变量数值的传递默认就是ByRef。
ByVal: 当在参数名称前使用关键字ByVal时,VBA按值传递参数,这意味着VBA复制了一份原始数据,然后将复制的值传递给函数,如果函数改变了参数的数值,原始数据不会改变——只有复制的值变化。
参考资料:http://blog.csdn.net/ruokle/article/details/4887715
参考技术A Microsoft 窗体中的 ByVal 关键词表示将首选参数作为数值传递。这是 Visual Basic 中 ByVal 的标准含义。但是,在 Microsoft 窗体中可以将 ByVal 用于 ReturnBoolean、ReturnEffect、ReturnInteger 或 ReturnString 对象。当您如此使用时,传递的数值不是简单的数据类型;而是一个指向对象的指针。当用于以上对象时,ByVal 将引用对象本身而非传递参数的方法。上文列出的每个对象都具有可以设置的 Value 属性。您还可以将此值传递进或传递出函数。因为您能够改变对象成员的值,所以即使该事件语法说明此参数是 ByVal,事件仍然产生与 ByRef 一致的效果。
给与 ReturnBoolean、ReturnEffect、ReturnInteger 或 ReturnString 相关的参数赋值,与给任何其他参数赋值没有区别。例如,如果事件语法指明一个用于 ReturnBoolean 对象的 Cancel 参数,语句 Cancel=True 仍然是合法的,就像对于其他数据类型一样。
以上是关于Excel vba中怎样填写数值改变单元格后触发事件的主要内容,如果未能解决你的问题,请参考以下文章