单元格在VBA的表示方法 1.docx
- 文档编号:28527995
- 上传时间:2023-07-18
- 格式:DOCX
- 页数:12
- 大小:43.62KB
单元格在VBA的表示方法 1.docx
《单元格在VBA的表示方法 1.docx》由会员分享,可在线阅读,更多相关《单元格在VBA的表示方法 1.docx(12页珍藏版)》请在冰豆网上搜索。
单元格在VBA的表示方法1
单元格在VBA的表示方法:
1、Range("单元格地址") 如Range("a1") 即为A1单元格
2、CELLS(行,列) 如CELLS(1,1)也为A1单元格,CELLS(2,1)为A2单元格
工作表在VBA中表示方法:
sheets("工作表名")
每个函数前都要加Application.WorksheetFunction.?
答:
如果是单个调用必须加
如果是多个调用就可以用WITH语句省去后面的
如Sub矩形1_单击()DimiAsIntegerFori=1To20Sheets("sheet1").Cells(i,1)=iNextWithApplication.WorksheetFunctionRange("a21").Value=.Sum(Range("a1:
a20")) 注意SUM前面要有个点才行Range("a22").Value=.Average(Range("a1:
a20"))EndWithEndSub
COLUMN是指列,COLUMNS是指列的集合
ROW是表示行,ROWS是行的集合
如果用Sheets("sheet1").columns.select 会选定所有列即整个工作表
SUB语句,需要有个事件触发它,才能执行,就比如一个箱子,只有去搬、推等外力施加与它时,它才会动。
设置个按纽目的就是为了执行SUB语句
Range("A1:
A22").ClearContents该语句是清除内容的语句
Private的中文意思是私有的,PrivateSub中的程序只能在本程序内部运行而不能被其他程序调用,而SUB语句则可以
如:
SUBBB()
ENDSUB
SUBAA()
BB
ENDSUB
Range("B65536").End(xlUp).Row
是指B列最后一个非空单元格,END(XLUP)是向上数第一个非空单元格,为了准备找到最下面的非空单元格,当然要从RANGE("B65536")开始向上找了
MSGBOX有时带()
比如AAA=MSGBOX()
这种情况下可以取到用户点击对话框按纽的返回值,以确定下一步该怎么做
而不带括号只是提示的作用,不能取得返回的值
如MSGBOX......
以下是引用playgirl在2004-10-515:
18:
00的发言:
那为为什么要用K=K+1。
如果向下数第一个非空单元格就是range("b1").end(xldown).row
向左数第一个非空单元格:
range("iv1").end(xlleft).column
向右数第一个非空单元格:
range("a1").end(xlright).column
是这样吗?
谢谢!
向右是End(xltoright) 向左End(xltoleft)
K=K+1是在原来的基础加1
如选取Sheet1第一行有内容单元格区域(假设A1不为空):
sheets("sheet1").range("a1",range("a1").end(xltoright)).select
选取B列有内容单元格区域:
(假设B1不为空):
sheets("sheet1").range("B1",range("B65536").end(XLUP)).select
以下是引用老荷才露在2004-10-516:
30:
00的发言:
a="b:
b"),">106")Ifa>1ThenMsgBox"大于106的数有"&a&"个",1最后这个,1怎么解释;a这个变量是不是省略了dim的声明,不声明也行吗?
兰老师的最后一句中的1+64,怎么解释
其实这个程序是加了个判断,如果统计的结果有>106的值(即A>1)就显示提示对话框,否则就不显示,
1+64参考下面的贴子:
变量在程序中如果事先约定,就必须声明,如果没有约定,就根据实际情况而定,一般来说声明最好,这样可以减少运行程序所占用的内存.
注:
约定:
相关图片如下(VBE编辑器---工具---选项)
此主题相关图片如下:
Functionpanduan(aaAsRange) Ifaa.Value>0Thenpanduan="大于零"ElseIfaa.Value=0Thenpanduan="等于零"Elsepanduan="小于零"EndIfEndFunction
Functionpanduan(aaAsRange) panduan即是你定义的函数名称,就如IF,MATCT等函数名称一样
(aaAsRange) aa是该函数的参数,aaAsRange是定义该参数为单元格,在本例中是要判断正负或零的引用单元格即=panduan(A1)中的A1
Ifaa.Value>0Thenpanduan="大于零"
是对引用单元格aa的值进行判断,把判断的结果返回给该函数所在单元格
在下面两句中间输入Workbooks后再输入个点("."),就会出现一个下拉框,框中的带小手指的就是工作薄集合的属性,带飞行的小书本的是方法,比如:
新建(ADD),关闭(CLOSE),打开(OPEN)就是方法
MsgBox是VBA中的一个函数.可以以对话框形式显示或返回信息,如:
当你在关闭工作薄时的提示
当你在删除工作表时出现的提示
一次新建多个工作薄:
Fori=10To13Workbooks.AddActiveWorkbook.SaveAsFilename:
="c:
\"&i&".xls"Next
可以了.新建四个工作表名字分别为(10-13).XLS .SaveAs什么意思?
对工作簿的修订保存到另一个不同的文件。
Workbooks.close是关闭所有打开的工作薄
Workbooks("123,XLS").close是关闭指定的工作薄
以上讨论了工作薄的新建,保存和统计,做个练习
怎么知道文件是隐藏后缀?
我目前有两打开的文件,一个直接显示BOOK6没有扩展名,一个是BOOK2.XLS是怎么回事?
ByVal是通常用来表示某个自变量将以传值(一种以传递自变量值给程序的方式,让程序取得变量的值,注:
变量的值将不会被程序所更改)的方式传值
上例中:
PrivateSubWorkbook_NewSheet(ByValShAsObject)Application.DisplayAlerts=FalseSh.DeleteApplication.DisplayAlerts=TrueEndSub
把新增加的工作表作为变量传给程序(ByValShAsObject),程序中Sh.Delete才能运行,Sh即为新插入的工作表,(ByValShAsObject)是系统自动提供的,不能更改
工作表SHEETS的属性和方法很多,介绍几个常用的
Sheets.Count 工作薄中工作表的数量
Sheets
(1).name 返回第一个工作表的名子
sheets("sheet1").activate 设置sheet1为活动工作薄
sheets("sheet1").Delete 删除sheet1
Sheets("SHEET1").MoveAFTER:
=Sheets(Sheets.Count) 把Sheet1移到最后
sheets("sheet1").ProtectPASSWORD:
=123 保护工作表
sheets("sheet1").unProtectPASSWORD:
=123 解除工作表保护
sheets("sheet1").usedrange 工作表中已使用的单元格区域
sheets("sheet1").visible=true(false) 工作表是否隐藏
sheets("sheet1").ScrollArea="$A$1:
$A$10" 工作表的控制区域为A1:
A10
请教一下,用VB的OPEN可以打开其他可执行文件么?
比如*.mp3,*.bmp……
答:
不能
路过,看着挺好!
兰色幻想辛苦了!
补充一下:
有两个方法,是在对工作簿open、saveas操作时非常有用的:
getopenfilename、getsaveasfilename。
这两个方法是用于打开“打开”、“另存为”对话框,获取要open、saveas的工作簿路径名称。
前面兰色幻想老师说的打开、另存为的方法都是在代码中直接指定路径和文件名,对自己用可以了,但一旦文件名或路径有了变化,就要修改代码,因此与用户的交互性不是很好。
使用这两个方法,可以在需要打开或另存的时候跳出对话框,由用户直接选取打开文件或另存文件的路径、文件名。
fileToOpen=Application.GetOpenFilename("ExcelFiles(*.xls),*.xls")IffileToOpen<>FalseThen MsgBox"Open"&fileToOpenEndIf
这是帮助中的一段代码,可以将它放入sub中测试一下,注意运行后并不真正打开选取的文件,只是取得该文件的路径、文件名,真正打开还要使用workbooks.open方法。
补充一点:
Application.Dialogs(5).Show是调用另存为对话框,
Application.Dialogs
(1).Show是调用打开对话框
如果想了解更多对话框对应的参数
设置一个按纽运行下面的宏(看下一个时按ESC)
Sub矩形1_单击()
onerrorresumenextForI=1To100MsgBox"下面的对话框参数将对应参数"&IApplication.Dialogs(I).ShowNextEndSub
下是引用lpdcd在2004-10-159:
50:
00的发言:
请问:
程序放错地方了,什么程序应该在Thisworkbook中,什么程序应在模块中。
如果你想让EXCEL自动为你服务(如打开、关闭文件、单击单元格、更换工作表就自动执行你设置的程序,而不需要去点击按纽或宏--执行宏来触发宏的运行)就考虑用事件程序,也就是放到MIRCROSOFTEXCEL对象中,如果程序要用手工控制,如点击某个按纽或通过宏选项执行宏才让程序运行,这种情况下用宏按纽方便。
举个例子:
填充非空单元格颜色
PrivateSubWorkbook_SheetChange(ByValShAsObject,ByValTargetAsRange)IfTarget.Value<>""Then=3EndIfEndSub
上面是一个事件程序,当工作表内容改变时就运行=3
如果这用宏来完成则很不方便,如果这样则,在单元格中每填入一个数字都要点一下按纽运行下面的宏Sub矩形1_单击()IfActiveCell.Value<>""Then=3EndIfEndSub
在VBA中,单元格常用的表示方法有两种,
一种是RANGE
如A1在VBA的表示方法是Range("a1")
A1:
100的表法方法是:
Range("A1:
A100")
和以前一样,大家先在工作表中插入一个矩形作为执行宏的按纽
在按纽上单击右键,单击指定宏,再单击新建,在VBE窗口中的代码窗口会出现
Sub矩形1_单击()
EndSub
在两句中间输入
Range("a1")=1000
Range可以代表一个单元格区域,也可以代表一个单元格,通过
Range("a1")=1000也可以看出,它的用法是Range后括号中带上"A1" 就可以表示我们平时在工作表用到的中的A1单元格了,
它在表示一个连续区域时是这个的,Range("区域的左上角单元格:
区域的右下角单元格")
请把刚才的代码再加上一句:
Range("a1:
a10")=1000
如果是不连续的单元格多个区域,它是这样表示的:
Range("单元格区域1,单元格区域2.....")
把刚才的代码替换为:
Range("a1:
a10,c1:
c10,e1:
e10")=100
[A1]是Range("A1")的简写.二者在用法上没有什么区别,但在输入时有点不同,如当你输入[A1]后加点时,后面不会出现属性和方法列表,而输入Range("A1")加点后则会出现属性列表供你选取
Union是求多个单元格区域的并集,用法是Union(单元格区域1,单元格区域2.....)
它返回的是所有区域的所有单元格集合
Range("C16").Select ActiveCell.FormulaR1C1="100" Range("C11").Select
其实我只是在C16单元格中填入数值100,就会出现这么一大堆代码,这此代码可以优化为:
Range("C16").="100"
Application.Intersect(Range("a1:
a10"),Range("a3:
c4")).Select
这一句的意思是选中区域A1:
A10和A3:
C4重叠的区域,即两个区域共有的区域,此名代码运行的结果是选中区域A3:
A4
注意Intersect方法是一个非常实用的一个方法,比如我们在动态选取工作表Sheet1A列中已存在数据的区域时,就会用到它。
在介绍这个用法前还要介绍一下另一个工作表中非常实用的属性:
Usedrange
你可以选试着运行一下:
运行,在当前工作表中的所有用过的区域全被选中了。
你明白了吗,其实usedrange就是工作表中所有已存在内容的矩形区域,为什么不说是存在内容的单元格呢?
原因是比如你在一个空工作表中的B3和C5单元格任意输入一个数值,运行,而是B3:
C5单元格区域
2003,不支持
可以了!
我们平时在程序中会看到
Activesheet
worksheets("sheet1")
sheet1
sheets("sheet1")
Sheets
(1)
顺便说一说他们的区别
Activesheet是指当前活动工作表,即你正在操作的工作表
worksheets("sheet1")等同于sheets("sheet1")是特指工作表Sheet1,注意这时的Sheet1是工作表的名子,就如同"员工工资表"一样是工作表的名称,而Sheet1和Sheets
(1),不管你如何命名,Sheet1和Sheets
(1)就只代表第一个工作表,Sheet2和Sheets
(2)代表第二个工作表。
。
。
。
Intersect(Range("a:
a"),Sheets("sheet1").UsedRange).Select
Range("a:
a")是A列,Sheets("sheet1").UsedRange是工作表sheet1已使用的所有单元格区域,用Intersect求二者的共有区域,结果就是我们所要的A列已用所有区域
其实这中间有个规律:
如果你输入的是非数字的字符,即使你删除了,也被当做已用区域(已用过的区域),而当你删除的是你输入的数字时则不受这个限制)
兰老师:
还是不明白?
输入非数字的字符时,确实是这样。
但是当输入的数字时,有时还是受这个限制的,如附件中的A3删掉后,怎么还选呢?
应该是受“Sheets("sheet1").UsedRange是工作表sheet1已使用的所有单元格区域”的影响吧,结果只是二者的共有区域,并不是我们所要的A列已用所有区域。
答;因为这个区域是矩形区域,在其他列第三行已填有内容,所以A3即使删除也属已用区域。
你可以再试着在C20填入任意一个内容,A列选取的也是到20行
CellS(行数,列数)
如A1:
Cells(1,1) 用range表示:
range("a1")
b2:
cells(2,2) 用range表示:
range("b2")
c100:
cells(100,3) 用range表示:
range("c100")
cells也是一个常用的单元格表示方法,它和Range在表示单元格时有什么共同点和区别呢?
Range可以表示单元格,也可以表示单元格区域cells也是这样,但除了cells作为一外集合对象外其他只能表示一个独立的单元格,如:
Cells.select 选取工作表所有单元格
Cells(2,2).select 选取B2单元格
所以在表示单元格区域时,除表示全部单元格外,其他均需用Range来表示如:
range("a1:
b20").
offset是单元格或单元格区域的移动 offset(移动行数,移动列数)
resize是单元格或单元格区域的行数和列数重新设置后范围大小 resize(变动后行数,变动后列数)
例:
Range("A1:
B2").Select
选取A1:
B2区域
Range("A1:
B2").Offset(3,0).Select
A1:
B2区域向下移动三行,结果是选中A4:
B5区域
Range("A1:
B2").Resize(2,4).Select
A1:
B2区域重新设置,行数为2,列数为4,结果为选取A1:
D2
Range("A1:
B2").Resize(Range("A1:
B2").Rows.Count+2,Range("A1:
B2").Columns.Count+4).Select
A1:
B2区域重新设置,在原来行数的基础上加2行,在原来列数的基础上加4列,运行结果为:
结果是选取A1:
F4
问:
比如我在SHEET1中放置一个按扭,单击就选定没有数据的行,当然了要VBA自己判断到底到哪一行有数据,然后选择剩下没有数据的空白行.
答:
Range("A1:
A1000").SpecialCells(xlCellTypeBlanks).EntireRow.Select
SpecialCells方法
此对象代表与指定类型及值相匹配的所有单元格。
语法
expression.SpecialCells(Type,Value)
expression 必选。
该表达式返回一个Range对象。
XX文库-让每个人平等地提升自我Type Long类型,必选。
要包含的单元格。
可为以下XlCellType常量之一。
xlCellTypeAllFormatConditions
任意格式的单元格
xlCellTypeAllValidation
具有有效条件的单元格
xlCellTypeBlanks
空单元格
xlCellTypeComments
包含注释的单元格
xlCellTypeConstants
包含常量的单元格
xlCellTypeFormulas
包含公式的单元格
xlCellTypeLastCell
已用区域的最后一个单元格
xlCellTypeSameFormatConditions
具有相同格式的单元格
xlCellTypeSameValidation
具有相同有效条件的单元格
xlCellTypeVisible
所有可见单元格
Value Variant类型,可选。
如果Type为xlCellTypeConstants或xlCellTypeFormulas之一,此参数可用于确定结果中应包含哪几类单元格。
将某几个值相加可使此方法返回多种类型的单元格。
默认情况下将选定所有常量或公式,对其类型则不加区别。
可为以下XlSpecialCellsValues常量之一:
xlErrors、xlLogical、xlNumbers或xlTextValues。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单元格在VBA的表示方法 单元格 VBA 表示 方法