这个不同于为integer等" />
乔山办公网我们一直在努力
您的位置:乔山办公网 > excel表格制作 > <em>excel</em> vba 如何定义单元格<em>变量</em>

<em>excel</em> vba 如何定义单元格<em>变量</em>

作者:乔山办公网日期:

返回目录:excel表格制作


具体问题具体说。你这么笼统的文,只能笼统的回答,引用过来就好。

这个不同于为integer等类型的一般变量赋值,要先用set 关键字将变量赋为特定对象,创建该对象的一个引用,然后可赋值。
Public Sub 测试()
Dim dyg As Range
'如下语句正确,但意义不大
Set dyg = Range("B2")

'常用形式
set dyg=Range("A1") ‘A1可换成你想引用的单元格
dyg= Range("B2")
End Sub

此外,建议楼主将Range("b2")写为Range("B2"), 虽不影响结果,但养成良好的书写习惯比较好,对单元格引用,都默认为大写的。
假设把 sheet1 中A1单元格赋值给X变量,语句如下:
X = sheets(1).range("A1")
假设X经过计算后,得到一个变量值Y,那么把Y赋值给A1,语句为:
sheets(1).range("A1")=Y
这样就实现了单元格与变量之间的相互赋值

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

变量是一个命名的内存位置。是在程序或代码运行过程中,用于临时存e69da5e887aae79fa5e98193363储数据,并且其存储的数据可以根据需要发生改变的一个命名项目。
变量由名称(变量名)和数据类型指定:
变量名——用来引用变量
数据类型——确定变量所能存储信息的种类以及所占存储空间的大小
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表示当前变量的类型。

举例说明吧,下面这个 myCell 变量就是单元格变量了。

Sub Macro1()
Dim myCell As Range
Set myCell = Range("A2") '为单元格变量赋值
myCell.Formula = "=Today()" '为单元格变量所代表的单元格填写内容
myCell.Offset(1, 0).Value = "测试"
myCell.Select '选中单元格变量所代表的单元格
End Sub
--------------------------------------------------------
所定义的 Range 对象,与工作表里的单元格当然一样,因为它们是同一个Range类的对象嘛,所有e68a847a686964616f361的属性与方法都相同呀。

Sub Macro1()
Dim myCell As Range
Set myCell = Union(Range("A2", "C4"), Range("A6", "C7")) '为单元格变量赋值
myCell.Formula = "=row() & Column()" '为单元格变量所代表的单元格填写内容
myCell.Copy
myCell.Range("A1").Offset(7, 3).Select
ActiveSheet.Paste
MsgBox myCell.Range("A1").Text 'myCell对象中的第1行第1列值
MsgBox myCell.Cells(3, 2).Text 'myCell对象中的第3行第2列值
MsgBox myCell.Columns.Count 'myCell对象的列数统计
End Sub

但是“本身myCell不属于任何一个工作表”这个恐怕不是那么容易做到的,因为简单的这样两行代码:
Dim myCell As Range
Set myCell = Union(Range("A2", "C4"), Range("A6", "C7")) '为单元格变量赋值
所定义的变量 myCell 它只是一个地址引用,并没有在系统的内存中开辟出一个区域来(复制)存放 Union(Range("A2", "C4"), Range("A6", "C7")) 这些单元格的内容,当使用 myCell 时,实际还是依赖于 myCell 所指向的工作表单元格。

比如:
Sub Macro2()
Dim myCell As Range
Range("A1") = 1
Set myCell = Range("A1")
Range("A1") = 5
MsgBox myCell
End Sub
这里 Range("A1") = 5 改变了值,MsgBox myCell 也显示 5,就是说,这个对象实际是一个对象指针(引用)。

有疑问,请Hi我或给我发百度消息
GoodLuck!

相关阅读

关键词不能为空
极力推荐

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