单元格在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 Integer For i = 1 To 20 Sheets(\"sheet1\").Cells(i, 1) = i Next With Application.WorksheetFunction Range(\"a21\").Value = .Sum(Range(\"a1:a20\")) 注意SUM前面要有个点才行 Range(\"a22\").Value = .Average(Range(\"a1:a20\")) End With End Sub COLUMN是指列,COLUMNS是指列的集合 ROW是表示行,ROWS是行的集合 如果用Sheets(\"sheet1\").columns.select 会选定所有列即整个工作表 SUB 语句,需要有个事件触发它,才能执行,就比如一个箱子,只有去搬、推等外力施加与它时,它才会动。设置个按纽目的就是为了执行SUB语句
Range(\"A1:A22\").ClearContents该语句是清除内容的语句
Private 的中文意思是私有的,Private Sub中的程序只能在本程序内部运行而不能被其他程序调用,而SUB语句则可以 如: SUB BB() END SUB SUB AA() BB END SUB
Range(\"B65536\").End(xlUp).Row 是指B列最后一个非空单元格,END(XLUP)是向上数第一个非空单元格,为了准备找到最下面的非空单元格,当然要从RANGE(\"B65536\")开始向上找了
MSGBOX 有时带() 比如AAA=MSGBOX() 这种情况下可以取到用户点击对话框按纽的返回值,以确定下一步该怎么做 而不带括号只是提示的作用,不能取得返回的值 如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第一行有内容单元格区域(假设A1不为空): sheets(\"sheet1\").range(\"a1\).end(xltoright)).select 选取B列有内容单元格区域:(假设B1不为空): sheets(\"sheet1\").range(\"B1\UP)).select 以下是引用老荷才露在2004-10-5 16:30:00的发言: a = Application.WorksheetFunction.CountIf(Range(\"b:b\"), \">106\") If a > 1 Then MsgBox \"大于106的数有\" & a & \"个\最后这个,1 怎么解释;a 这个变量是不是省略了dim的声明,不声明也行吗? 兰老师的最后一句中的 1+,怎么解释 其实这个程序是加了个判断,如果统计的结果有>106的值(即A>1)就显示提示对话框,否则就不显示, 1+参考下面的贴子: http://club.excelhome.net/dispbbs.asp?boardid=5&star=13&replyid=297359&id=62008&skin=0&page=1 变量在程序中如果事先约定,就必须声明,如果没有约定,就根据实际情况而定,一般来说声明最好,这样可以减少运行程序所占用的内存. 注:约定:相关图片如下(VBE编辑器---工具---选项) 此主题相关图片如下:
Function panduan(aa As Range) If aa.Value > 0 Then panduan = \"大于零\" ElseIf aa.Value = 0 Then panduan = \"等于零\" Else panduan = \"小于零\" End IfEnd Function Function panduan(aa As Range) panduan即是你定义的函数名称,就如IF,MATCT等函数名称一样 (aa As Range) aa是该函数的参数,aa As Range是定义该参数为单元格,在本例中是要判断正负或零的引用单元格即=panduan(A1)中的A1 If aa.Value > 0 Then panduan = \"大于零\" 是对引用单元格aa的值进行判断,把判断的结果返回给该函数所在单元格
在下面两句中间输入Workbooks后再输入个点(\".\"),就会出现一个下拉框,框中的带小手指的就是工作薄集合的属性,带飞行的小书本的是方法,比如:新建(ADD),关闭(CLOSE),打开(OPEN)就是方法 MsgBox是VBA中的一个函数.可以以对话框形式显示或返回信息,如:当你在关闭工作薄时的提示 当你在删除工作表时出现的提示 一次新建多个工作薄:
For i = 10 To 13 Workbooks.Add ActiveWorkbook.SaveAs Filename:=\"c:\\\" & i & \".xls\" Next 可以了.新建四个工作表 名字分别为(10-13).XLS .SaveAs 什么意思? 对工作簿的修订保存到另一个不同的文件。 Workbooks.close是关闭所有打开的工作薄 Workbooks(\"123,XLS\").close是关闭指定的工作薄 以上讨论了工作薄的新建,保存和统计,做个练习
怎么知道文件是隐藏后缀? 我目前有两打开的文件,一个直接显示BOOK6没有扩展名,一个是BOOK2.XLS是怎么回事?
ByVal是通常用来表示某个自变量将以传值(一种以传递自变量值给程序的方式,让程序取得变量的值,注:变量的值将不会被程序所更改)的方式传值 上例中: Private Sub Workbook_NewSheet(ByVal Sh As Object) Application.DisplayAlerts = False Sh.Delete Application.DisplayAlerts = True End Sub 把新增加的工作表作为变量传给程序(ByVal Sh As Object),程序中Sh.Delete才能运行,Sh即为新插入的工作表,(ByVal Sh As Object)是系统自动提供的,不能更改
工工作作表表SSHHEEEETTSS的的属属性性和和方方法法很很多多,,介介绍绍几几个个常常用用的的 Sheets.Count 工作薄中工作表的数量 Sheets(1).name 返回第一个工作表的名子 sheets(\"sheet1\").activate 设置sheet1为活动工作薄 sheets(\"sheet1\").Delete 删除sheet1 Sheets(\"SHEET1\").Move AFTER:=Sheets(Sheets.Count) 把Sheet1移到最后 sheets(\"sheet1\").Protect PASSWORD:=123 保护工作表 sheets(\"sheet1\").unProtect PASSWORD :=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(\"Excel Files (*.xls), *.xls\") If fileToOpen <> False Then MsgBox \"Open \" & fileToOpen End If 这是帮助中的一段代码,可以将它放入sub中测试一下,注意运行后并不真正打开选取的文件,只是取得该文件的路径、文件名,真正打开还要使用workbooks.open方法。
补充一点: Application.Dialogs(5).Show是调用另存为对话框, Application.Dialogs(1).Show是调用打开对话框 如果想了解更多对话框对应的参数 设置一个按纽运行下面的宏(看下一个时按ESC) Sub 矩形1_单击() on error resume next For I = 1 To 100 MsgBox \"下面的对话框参数将对应参数\" & I Application.Dialogs(I).Show Next End Sub
下是引用lpdcd在2004-10-15 9:50:00的发言: 请问:程序放错地方了,什么程序应该在Thisworkbook中,什么程序应在模块中。 如果你想让EXCEL自动为你服务(如打开、关闭文件、单击单元格、更换工作表就自动执行你设置的程序,而不需要去点击按纽或宏--执行宏来触发宏的运行)就考虑用事件程序,也就是放到 MIRCROSOFT EXCEL对象中,如果程序要用手工控制,如点击某个按纽或通过宏选项执行宏才让程序运行,这种情况下用宏按纽方便。 举个例子:填充非空单元格颜色 Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) If Target.Value <> \"\" Then Target.Interior.ColorIndex = 3 End If End Sub 上面是一个事件程序,当工作表内容改变时就运行Target.Interior.ColorIndex = 3 如果这用宏来完成则很不方便,如果这样则,在单元格中每填入一个数字都要点一下按纽运行下面的宏 Sub 矩形1_单击() If ActiveCell.Value <> \"\" Then ActiveCell.Interior.ColorIndex = 3 End If End Sub
在VBA中,单元格常用的表示方法有两种, 一种是RANGE 如A1在VBA的表示方法是Range(\"a1\") A1:100的表法方法是: Range(\"A1:A100\") 和以前一样,大家先在工作表中插入一个矩形作为执行宏的按纽 在按纽上单击右键,单击指定宏,再单击新建,在VBE窗口中的代码窗口会出现 Sub 矩形1_单击() End Sub 在两句中间输入 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 你可以选试着运行一下:Activecell.usedrange.Select
运行Activecell.usedrange.Select你会发现,在当前工作表中的所有用过的区域全被选中了。你明白了吗,其
实usedrange就是工作表中所有已存在内容的矩形区域,为什么不说是存在内容的单元格呢?原因是比如你在一个空工作表中的B3和C5单元格任意输入一个数值,运行Activecell.usedrange.Select后选取的不只是B3和C5单元格,而是B3:C5单元格区域
2003,不支持Aactivecell.usedrange.Select activesheet.usedrange.select 可以了! Sheet1.UsedRange.Select
我们平时在程序中会看到 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 对象。 Type Long 类型,必选。要包含的单元格。可为以下 XlCellType 常量之一。 常量 xlCellTypeAllFormatConditions xlCellTypeAllValidation xlCellTypeBlanks xlCellTypeComments xlCellTypeConstants xlCellTypeFormulas xlCellTypeLastCell 说明 任意格式的单元格 具有有效条件的单元格 空单元格 包含注释的单元格 包含常量的单元格 包含公式的单元格 已用区域的最后一个单元格 xlCellTypeSameFormatConditions 具有相同格式的单元格 xlCellTypeSameValidation xlCellTypeVisible 具有相同有效条件的单元格 所有可见单元格 Value Variant 类型,可选。如果 Type 为 xlCellTypeConstants 或 xlCellTypeFormulas 之一,此参数可用于确定结果中应包含哪几类单元格。将某几个值相加可使此方法返回多种类型的单元格。默认情况下将选定所有常量或公式,对其类型则不加区别。可为以下 XlSpecialCellsValues 常量之一:xlErrors、xlLogical、xlNumbers 或 xlTextValues。
因篇幅问题不能全部显示,请点此查看更多更全内容