单元格在VBA表示方法_第1页
单元格在VBA表示方法_第2页
单元格在VBA表示方法_第3页
单元格在VBA表示方法_第4页
单元格在VBA表示方法_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、单元格在VBA的表示方法:1、Range("单元格地址")   如Range("a1")   即为A1单元格2、CELLS(行,列)   如CELLS(1,1)也为A1单元格,CELLS(2,1)为 A2单元格工作表在VBA中表示方法:sheets("工作表名")每个函数前都要加Application.WorksheetFunction.?答:如果是单个调用必须加如果是多个调用就可以用WITH语句省去后面的如Sub 矩形1_单击()Dim i As IntegerFor i

2、= 1 To 20Sheets("sheet1").Cells(i, 1) = iNextWith Application.WorksheetFunctionRange("a21").Value = .Sum(Range("a1:a20")          注意SUM前面要有个点才行Range("a22").Value = .Average(Range("a1:a20")End WithEnd

3、SubCOLUMN是指列,COLUMNS是指列的集合ROW是表示行,ROWS是行的集合如果用Sheets("sheet1").columns.select   会选定所有列即整个工作表SUB 语句,需要有个事件触发它,才能执行,就比如一个箱子,只有去搬、推等外力施加与它时,它才会动。设置个按纽目的就是为了执行SUB语句Range("A1:A22").ClearContents该语句是清除内容的语句Private 的中文意思是私有的,Private Sub中的程序只能在本程序内部运行而不能被其他程序调用,而SUB语句则可以如:SUB B

4、B() END SUBSUB AA()   BB           END SUBRange("B65536").End(xlUp).Row是指B列最后一个非空单元格,END(XLUP)是向上数第一个非空单元格,为了准备找到最下面的非空单元格,当然要从RANGE("B65536")开始向上找了MSGBOX 有时带()比如AAA=MSGBOX()这种情况下可以取到用户点击对话框按纽的返回值,以确定下一步该怎么做而不带括号只是提示的作用,

5、不能取得返回的值如MSGBOX .以下是引用playgirl在2004-10-5 15: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

6、第一行有内容单元格区域(假设A1不为空):sheets("sheet1").range("a1",range("a1").end(xltoright).select选取B列有内容单元格区域:(假设B1不为空):sheets("sheet1").range("B1",range("B65536").end(XLUP).select以下是引用老荷才露在2004-10-5 16:30:00的发言: a = Application.WorksheetFunction.CountIf(

7、Range("b:b"), ">106")If a > 1 ThenMsgBox "大于106的数有" & a & "个", 1最后这个,1 怎么解释;a 这个变量是不是省略了dim的声明,不声明也行吗?兰老师的最后一句中的 1+64,怎么解释其实这个程序是加了个判断,如果统计的结果有>106的值(即A>1)就显示提示对话框,否则就不显示,1+64参考下面的贴子:变量在程序中如果事先约定,就必须声明,如果没有约定,就根据实际情况而定,一般来说声明最好,这样可以减少运行程序所占

8、用的内存.注:约定:相关图片如下(VBE编辑器-工具-选项)此主题相关图片如下:Function panduan(aa As Range)        If aa.Value > 0 Thenpanduan = "大于零"ElseIf aa.Value = 0 Thenpanduan = "等于零"Elsepanduan = "小于零"End IfEnd FunctionFunction panduan(aa As Range) 

9、0;    panduan即是你定义的函数名称,就如IF,MATCT等函数名称一样(aa As Range)   aa是该函数的参数,aa As Range是定义该参数为单元格,在本例中是要判断正负或零的引用单元格即=panduan(A1)中的A1If aa.Value > 0 Thenpanduan = "大于零"是对引用单元格aa的值进行判断,把判断的结果返回给该函数所在单元格在下面两句中间输入Workbooks后再输入个点("."),就会出现一个下拉框,框中的带小手指的就是工作薄集合

10、的属性,带飞行的小书本的是方法,比如:新建(ADD),关闭(CLOSE),打开(OPEN)就是方法MsgBox是VBA中的一个函数.可以以对话框形式显示或返回信息,如:当你在关闭工作薄时的提示 当你在删除工作表时出现的提示一次新建多个工作薄:For i = 10 To 13Workbooks.AddActiveWorkbook.SaveAs "c:" & i & ".xls"Next可以了.新建四个工作表 名字分别为(10-13).XLS   .SaveAs 什么意思?对工作簿的修订保存到另一个不同的文件。Workbo

11、oks.close是关闭所有打开的工作薄Workbooks("123,XLS").close是关闭指定的工作薄以上讨论了工作薄的新建,保存和统计,做个练习怎么知道文件是隐藏后缀?我目前有两打开的文件,一个直接显示BOOK6没有扩展名,一个是BOOK2.XLS是怎么回事?ByVal是通常用来表示某个自变量将以传值(一种以传递自变量值给程序的方式,让程序取得变量的值,注:变量的值将不会被程序所更改)的方式传值上例中:Private Sub Workbook_NewSheet(ByVal Sh As Object)Application.DisplayAlerts = False

12、Sh.DeleteApplication.DisplayAlerts = TrueEnd Sub      把新增加的工作表作为变量传给程序(ByVal Sh As Object),程序中Sh.Delete才能运行,Sh即为新插入的工作表,(ByVal Sh As Object)是系统自动提供的,不能更改工作表SHEETS的属性和方法很多,介绍几个常用的Sheets.Count  工作薄中工作表的数量Sheets(1).name  返回第一个工作表的名子sheets("sheet1&q

13、uot;).activate      设置sheet1为活动工作薄sheets("sheet1").Delete       删除sheet1Sheets("SHEET1").Move AFTER:=Sheets(Sheets.Count)   把Sheet1移到最后sheets("sheet1").Protect PASSWORD:=123  保护工作表sheets(&qu

14、ot;sheet1").unProtect PASSWORD :=123     解除工作表保护sheets("sheet1").usedrange        工作表中已使用的单元格区域sheets("sheet1").visible=true(false)        工作表是否隐藏sheets("sheet1").Sc

15、rollArea="$A$1:$A$10"   工作表的控制区域为A1:A10         请教一下,用VB的OPEN可以打开其他可执行文件么?比如*.mp3,*.bmp答:不能路过,看着挺好!兰色幻想辛苦了!补充一下:有两个方法,是在对工作簿open、saveas操作时非常有用的:getopen、getsaveas。这两个方法是用于打开“打开”、“另存为”对话框,获取要open、saveas的工作簿路径名称。前面兰色幻想老师说的打开、另存为的方法都是在代码中直接指定路径

16、和文件名,对自己用可以了,但一旦文件名或路径有了变化,就要修改代码,因此与用户的交互性不是很好。使用这两个方法,可以在需要打开或另存的时候跳出对话框,由用户直接选取打开文件或另存文件的路径、文件名。 = Application.GetOpen("Excel Files (*.xls), *.xls")If <> False Then    MsgBox "Open " & End If这是帮助中的一段代码,可以将它放入sub中测试一下,注意运行后并不真正打开选取的文件,只是取得该文件的路径、文件

17、名,真正打开还要使用workbooks.open方法。补充一点:Application.Dialogs(5).Show是调用另存为对话框,Application.Dialogs(1).Show是调用打开对话框如果想了解更多对话框对应的参数设置一个按纽运行下面的宏(看下一个时按ESC)Sub 矩形1_单击()on error resume nextFor I = 1 To 100MsgBox "下面的对话框参数将对应参数" & IApplication.Dialogs(I).ShowNextEnd Sub下是引用lpdcd在2004-10-15 9:50:00的发言:

18、请问:程序放错地方了,什么程序应该在Thisworkbook中,什么程序应在模块中。如果你想让EXCEL自动为你服务(如打开、关闭文件、单击单元格、更换工作表就自动执行你设置的程序,而不需要去点击按纽或宏-执行宏来触发宏的运行)就考虑用事件程序,也就是放到 MIRCROSOFT EXCEL对象中,如果程序要用手工控制,如点击某个按纽或通过宏选项执行宏才让程序运行,这种情况下用宏按纽方便。举个例子:填充非空单元格颜色Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)If Target.Value

19、<> "" ThenTarget.Interior.ColorIndex = 3End IfEnd Sub上面是一个事件程序,当工作表内容改变时就运行Target.Interior.ColorIndex = 3如果这用宏来完成则很不方便,如果这样则,在单元格中每填入一个数字都要点一下按纽运行下面的宏Sub 矩形1_单击()If ActiveCell.Value <> "" ThenActiveCell.Interior.ColorIndex = 3End IfEnd Sub在VBA中,单元格常用的表示方法有两种,一种是RANGE如

20、A1在VBA的表示方法是Range("a1")   A1:100的表法方法是:  Range("A1:A100")和以前一样,大家先在工作表中插入一个矩形作为执行宏的按纽在按纽上单击右键,单击指定宏,再单击新建,在VBE窗口中的代码窗口会出现Sub 矩形1_单击()End Sub在两句中间输入Range("a1")=1000Range可以代表一个单元格区域,也可以代表一个单元格,通过Range("a1")=1000 也可以看出,它的用法是Range后括号中带上"A1

21、"  就可以表示我们平时在工作表用到的中的A1单元格了,它在表示一个连续区域时是这个的,Range("区域的左上角单元格:区域的右下角单元格")请把刚才的代码再加上一句:Range("a1:a10")=1000 如果是不连续的单元格多个区域,它是这样表示的:Range("单元格区域1,单元格区域2.")把刚才的代码替换为:Range("a1:a10,c1:c10,e1:e10") = 100   A1是Range("A1")的简写.二者在用法上没

22、有什么区别,但在输入时有点不同,如当你输入A1后加点时,后面不会出现属性和方法列表,而输入Range("A1")加点后则会出现属性列表供你选取Union是求多个单元格区域的并集,用法是Union(单元格区域1,单元格区域2.)它返回的是所有区域的所有单元格集合Range("C16").Select    ActiveCell.FormulaR1C1 = "100"    Range("C11").Select其实我只是在C16单元格中填

23、入数值100,就会出现这么一大堆代码,这此代码可以优化为:Range("C16").="100"Application.Intersect(Range("a1:a10"), Range("a3:c4").Select这一句的意思是选中区域A1:A10 和 A3:C4重叠的区域,即两个区域共有的区域,此名代码运行的结果是选中区域A3:A4        注意Intersect 方法是一个非常实用的一个方法,比如我们在动态选取工作表Shee

24、t1A列中已存在数据的区域时,就会用到它。在介绍这个用法前还要介绍一下另一个工作表中非常实用的属性:Usedrange你可以选试着运行一下:Activecell.usedrange.Select运行Activecell.usedrange.Select你会发现,在当前工作表中的所有用过的区域全被选中了。你明白了吗,其实usedrange就是工作表中所有已存在内容的矩形区域,为什么不说是存在内容的单元格呢?原因是比如你在一个空工作表中的B3和C5单元格任意输入一个数值,运行Activecell.usedrange.Select后选取的不只是B3和C5单元格,而是B3:C5单元格区域2003,不支

25、持Aactivecell.usedrange.Selectactivesheet.usedrange.select可以了!Sheet1.UsedRange.Select我们平时在程序中会看到Activesheetworksheets("sheet1")sheet1sheets("sheet1")Sheets(1)顺便说一说他们的区别Activesheet是指当前活动工作表,即你正在操作的工作表worksheets("sheet1")等同于sheets("sheet1")是特指工作表Sheet1,注意这时的Sheet

26、1是工作表的名子,就如同"员工工资表"一样是工作表的名称,而Sheet1和Sheets(1),不管你如何命名,Sheet1和Sheets(1)就只代表第一个工作表,Sheet2和Sheets(2)代表第二个工作表。Intersect(Range("a:a"), Sheets("sheet1").UsedRange).SelectRange("a:a")是A列,Sheets("sheet1").UsedRange是工作表sheet1已使用的所有单元格区域,用Intersect求二者的共有区域,结果

27、就是我们所要的A列已用所有区域其实这中间有个规律:如果你输入的是非数字的字符,即使你删除了,也被当做已用区域(已用过的区域),而当你删除的是你输入的数字时则不受这个限制)兰老师:还是不明白?输入非数字的字符时,确实是这样。但是当输入的数字时,有时还是受这个限制的,如附件中的A3删掉后,怎么还选呢?应该是受“Sheets("sheet1").UsedRange是工作表sheet1已使用的所有单元格区域”的影响吧,结果只是二者的共有区域,并不是我们所要的A列已用所有区域。答;因为这个区域是矩形区域,在其他列第三行已填有内容,所以A3即使删除也属已用区域。你可以再试着在C20填入

28、任意一个内容,A列选取的也是到20行CellS(行数,列数)如 A1:Cells(1,1)     用range表示: range("a1")     b2:     cells(2,2)      用range表示: range("b2")   c100:    cells(100,3)  

29、60; 用range表示: range("c100")   cells也是一个常用的单元格表示方法,它和Range在表示单元格时有什么共同点和区别呢?    Range可以表示单元格,也可以表示单元格区域cells也是这样,但除了cells作为一外集合对象外其他只能表示一个独立的单元格,如:Cells.select  选取工作表所有单元格     Cells(2,2).select     

30、60;  选取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").

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论