乔山办公网我们一直在努力
您的位置:乔山办公网 > excel表格制作 > <em>VBA</em>的自定义函数 和单元格 赋值-vba excel 获取单元格,excel

<em>VBA</em>的自定义函数 和单元格 赋值-vba excel 获取单元格,excel

作者:乔山办公网日期:

返回目录:excel表格制作


可以做到。
但是,检查输入的时候都是根据 Private Sub Worksheet_Change(ByVal Target As Range) 这个中断事件来触发的。当把计算结果再次写入 Target 单元格的时候,会再次触发这个Private Sub Worksheet_Change(ByVal Target As Range) 中断事件。
这就是电脑使用的 中断 触发机制。严重的情况下你会发现 Excel 进入了“死”机状态!
所以,为了避免这种情况发生,建议在把自定义函数结果写入该单元格之前,一定要 Disable 中断。写入以后还要再恢复中断。只有经过这样处理,才能保证该代码符合你的要求,又不zhidao会引起“死”机!

经在Excel 2003上运行,你的自定义函数能运行,只是X变量有些画蛇添足。你的问题可能是锁定了单元格并保护了工作表。
Function Sat(T As Single) As Single
Sheet2.Cells(3, 3) = T
Sat = Sheet2.Cells(6, 3)
End Function
这样不是更简单一些吗?
自定义函数中不能对其他单元格赋值
你的要求可以用工作表的Change事件过程来实现
也就是说
当指定单元格发生变化
自动运行一段程
程序中可以对需要的单元格进行赋值

示例:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$A$1" Then Range("A5") = "TEST"
End Sub

只要A1单元格内容变化,就将A5单元格中的内容修改为“TEST”

假设把 sheet1 中A1单元格赋值给X变量,语句如下:
X = sheets(1).range("A1")
假设X经过计算后,得到一个变量值Y,那么把Y赋值给A1,语句为:
sheets(1).range("A1")=Y
这样就实现了单元格与变量之间的相互赋值

关于此例中涉及到的VBA中变量的相关知识:
1、什么是变量

变量是一个命名的内存位置。是在程序或代码运行过程中,用于临时存储数据,并且其存储的数据可以根据需要发生改变的一个命名项目。
变量由名称(变量名)和数据类型指定:
变量名——用来引用变量
数据类型——确定变量所能存储信息的种类以e799bee5baa6e79fa5e98193e59b9ee7ad94365及所占存储空间的大小
2、变量的命名规则
(1)名称是由字母(A-Z,a-z)或数字和下划线“_”的任意组合。(在Excel 2002以后的版本中也可以包含中文);最后一个字符可以是类型说明符;
(2)变量名的长度不得超过255个字符
(3)变量名在有效的范围内必须是唯一的。有效的范围就是引用变量可以被程序识别的作用范围 例如一个过程、一个窗体等等;
(4)变量名不能是VBA中的保留字(关键字),也不能是末尾带类型说明符的保留字,但可以把保留字嵌入变量名。
说明:
(1)变量名是不区分大小写的。如ABC、aBc、abc等都是一样的;
(2)定义和使用变量时,通常要把变量名定义为容易使用阅读和能够描述所含数据用处的名称;
(3)根据需要混合使用大小写字母和数字。如果需要使用多单词组,变量中每个单词的第一个字母大写,例如:DataTemp表示临时数据,也可以两个单词中下划线分隔,例如:Last_Num;
(4)对于变量名也有更好的建议,每个变量名以两个或三个字符缩写开始,这些字符缩写对应于变量要存储数据的数据类型。例如strWorksheet as string表用来示工作表名,前缀str表示当前变量的类型。

相关阅读

关键词不能为空
极力推荐

ppt怎么做_excel表格制作_office365_word文档_365办公网