level 1
看了许多朋友的贴,都是希望能有个学习VBA基础的地主,但说了许多,就是没有人发起一个像样的贴来,那这粗活就由我来吧. 请各位热心的朋友看了这贴后,能把自己所学的与大家交流一下,多发贴,把自己的所学都能迟派用场,注意这楼里只贴基础,深一层的就再建一个新贴. 我也只懂基础,所以就先抢了这个基础的贴来发了.(*^-^*) 请大家多看,让VBA的入门者能学到更多,更快,走上VBA的新台阶.
2005年05月31日 15点05分
1
level 1
还有一点要大家注意的,就是请大家不要发相同内容的贴,除非你对其他朋友发的贴有更好的见解.多谢合作!~
2005年05月31日 15点05分
2
level 1
要打开VBA编程的话,可以按ALT+F11菜单栏中的 : 工具 -> 宏 -> 录制新宏请初学者要多多利用,因为这录制宏基本上EXCEL里的九成操作都能录制成代码,你在录制完成后,按ALT + F11,进入宏编辑中,就可以看到你刚才的操作所需要的代码了,这可是学VBA的捷径,不要小看. *^-^*
2005年05月31日 15点05分
3
level 1
WorkSheetFunction.Sum(Range("A1:A10")) 就是统计当前表的A1:A10的总和.那为什么要用Range("A1:A10")呢?因为在VBA里对单元格的引用与表中有点不同,但也可以直接一点,用[A1:A10].这样子说明,明白吗?
2005年06月01日 09点06分
6
level 1
ActiveCell.Value这是引用当前单元格的值.(ActiveCell同样功能,但一般还是加上Value会好一点)ActiveSheet.Name这是引用当前表的表名.Sheets(1).Select激活第一个工作表,(Sheets(2).Select 就是激活第二个工作表,如此类推)Range("A1:B10").SelectRange(Cells(1,1),Cells(10,2)).SelectRange("A1:B10").Select - 选择单元格范围A1:B10.Range(Cells(1,1),Cells(10,2)).Select - 与上相同,只是引用方法不同.'''以下为Cells()的注解.Cells( 1 , 1 ) 行 列表示当前表的1行,1列.本贴先到此,下班了,有空再发. (*^-^*)
2005年06月01日 09点06分
7
level 1
在使用VBA时,可以多用MSGBOX ”你好”这个信息框命令,可以试出你要的结果正不正确.例如:MsgBox ActiveCell将显示当前单元格的值.
2005年06月01日 09点06分
8
level 1
宏在表里运行,特别是在测试时,有个”快捷键”运行宏显得特别方便好用.那么宏的快捷键怎么定义呢?方法有两种:一:在录制宏的同时,在快捷键的Ctrl + "" 的框里输入个快捷方式的英文.(注意,只能是英文.)二:如果要给已有的宏加快捷方式,可以点 工具->宏->宏,再点右下方的”选项”,然后在快捷键下输入快捷键的英文.
2005年06月01日 15点06分
9
level 1
VBA里不一定用输入代码运行的都是宏,还有"事件".所谓的事件就是在EXCEL的表里头因为你做了一个操作或改动而给EXCEL表格所引发的一个动作,兴例说:你在一个表1(SHEET1)的单元格里输入了一个"A"(不管你在那个单元格里输入),那么引发了EXCEL表格的SHEET1修改单元格事件,这时如果你在SHEET1的单元格里写入了代码,例如:Private Sub Worksheet_Change(ByVal Target As Range) MsgBox "修改成功!"End Sub那么在你按下回车时,就会弹出一个提示框,里面不用我说,当然就是写着"修改成功"了.怎样?有意思吧.
2005年06月01日 15点06分
10
level 1
不好意思,楼上有一段写错了,现在修正,请见谅./:P你在一个表1(SHEET1)的单元格里输入了一个"A"(不管你在那个单元格里输入),那么引发了EXCEL表格的SHEET1修改单元格事件,这时如果你在SHEET1的修改事件中写入了代码,例如:Private Sub Worksheet_Change(ByVal Target As Range) MsgBox "修改成功!"End Sub
2005年06月01日 15点06分
11
level 1
要使用VBA就得写代码,可能有些初学的还不知道这代码该写在那吧?(不要笑)要编写VBA程序首先得加入模块,有两种方式:一.录制宏.点工具->宏->录制宏.(这样录制宏时EXCEL会自动加入一个模块)二.在VBA编辑器里头,手动加入模块.先打开VBA编辑器(ALT+F11),在左方的"工程"里点右键,再点"插入","模块",这样就可以双击新增的模块进行编辑了.但得注意自己,新增的模块是没有定义过程名的,你要自己输入个过程的名字.(这过程你不理解的话,可以理解为宏的名字就可以了.)例如: Sub MySum()按回车后就会自动生成:End Sub这是个过程结束的语句,不懂的可以先放不放,不用管他,总之把你的VBA代码写中他们之间就可以了.还有,像我刚输入的宏的名字 "MySum",在我输入完后,就可以在宏那里给他加个快捷键了.
2005年06月01日 15点06分
12
level 2
急切请教一个问题: A B C D1 5 90 12 1 03 03 5 90 44 5 90 15 8 36 0表中格式如上: 我想用执行宏的办法,我用鼠标选中A行的连续的几列,执行宏后删除所选择列的向下所有与它相等的行,比如说我要选中第1行中的A,B,C列,结果是将2,3,4,5……(最后)行与A,B,C 列相等的行删除掉,此举例数据将会把第3行与第四行删除。 谢谢各位宏高手们了!
2005年06月02日 15点06分
15
level 2
15楼中的A,B,C,D,提交后改变了位置,应该向右移一点,与下面的5 9 0 1对齐,在此说明一下。
2005年06月02日 15点06分
16
level 1
simplicity_NO ,你好这里是VBA基础的交流贴,你问的问题有点离题了,请建立新贴后,我再回答你吧.很抱歉,先多谢你能合作.请在本贴里发贴的朋友先看一二楼的发贴注意事项,谢谢~
2005年06月02日 16点06分
17
level 1
For循环是一个很好用也很常用的循环语句,他可以按指定的数字开始循环到指定的结束数.(我只说常用的方法引领你入门,再深入的使用可参考VBA里的帮助)For I = 1 TO 10 MsgBox "现在循环到 " & INext这个例子可以从1循环到10,并每循环一次就用信息框显示一次现在的I值.如有留意我在吧里发的贴,你就会发现我在EXCEL里常用FOR来循环执行一系列的单元格操作.以下举一个常用的简单例子:For I = 1 TO 10 Cells(I,1).Value = I '当前表I行,1列的值等于现时的I值.Next上例是利用For循环和I值会随循环的执行而不断加1的功能,为Cells(I,1),当前表的I行,1列写入现时的I值,通过这个例子你就可以知道FOR是怎样给I变量累加数的,还能看到FOR循环的一个方便之处,看,这样不就把1到10行的A列都给加入数值了吗. (*^-^*)
2005年06月02日 16点06分
18
level 1
15楼的,你好,希望下次不要在这里发其它贴,要不这样会很乱的.以下是你要的宏.你试试~ ,不行别骂我 '(*^-^*)'Sub t()NCCOU = Selection.Columns.Count '行到当前已选定单元格数NROW = Selection.Cells(1, 1).Row '当前行NCOL = Selection.Cells(1, 1).Column '当前开始单元格列Dim DA() '记录选定单元格值的数组NI = 0 '记录数组当前下标For i = NCOL To NCCOU '把当前选定区域的值赋给数组 NI = NI + 1 '数组下标加1 ReDim Preserve DA(NI) '改变数组当前下标最大值 DA(NI) = Cells(NROW, NCOL + i - 1) '赋值给最后一个数组NextFor NR = ActiveCell.Row + 1 To ActiveSheet.UsedRange.Rows.Count '开始核对选定区域下方的匹配数据 For RC = 1 To NCCOU If Cells(NR, RC) = "" Then Exit For '如等于空格退出本行循环 If Cells(NR, RC) <> DA(RC) Then Exit For '如不等于数组内的对应内容退出本行循环 If RC < NCCOU Then GoTo RE '如未对比到最后一个单元格退出本次循环 Range(Cells(NR, NCOL), Cells(NR, NCOL + NCCOU - 1)).Select '选定条件区域,方便查看 If MsgBox("符合条件,是否删除!", 4) <> 6 Then Exit For '如果不答"是"退出本次循环 Cells(NR, 1).EntireRow.Delete '删除目标行 NR = NR - 1 '删除后行少-1,不减1会有BUG RE: '设定一个跳转,因学艺不精,因能如此弥补 NextNextEnd Sub
2005年06月03日 13点06分
20
level 1
给单元格填入内容:以下代码都是当前表的A1单元格添加内容.Range("A1").Value = "你好!"Cells(1,1).Value = "你好!"以下代码为"SHEET2"的A1单元格添加内容.Sheets("SHEET2").Range("A1").Value = "你好!" 以下代码为序列为2的表的A1添加内容:Sheets(2).Range("A1").Value = "你好!"
2005年06月04日 07点06分
21