不懂VBA也编程Word格式.docx
《不懂VBA也编程Word格式.docx》由会员分享,可在线阅读,更多相关《不懂VBA也编程Word格式.docx(27页珍藏版)》请在冰点文库上搜索。
A:
A,N6)
F4=INDEX(Sheet2!
C:
C,N6)
……
3、从控件工具箱中添加一按钮到工作表,编辑标签文字,双击按钮,将前面文件中的代码复制到此:
复制内容到剪贴板
代码:
PrivateSubCommandButton1_Click()
Fori=[N7]To[N8]
[N6]=i
Me.PrintOut
Next
EndSub
将3个单元格名称修改为[N6]、[N7]、[N8]。
其中N7单元格输入“开始行号”、N8单元格输入“结束行号”。
4、添加窗体工具箱中的微调按钮到工作表,将链接单元格设为N6。
5、点击控件工具箱中的“退出设计模式”按钮,测试。
2、高亮显示当前行
用条件格式设置高亮显示当前行,难的是如何确定当前行。
用VBA就很简单,鼠标右击工作表标签,选择“查看代码”,将下面的代码粘贴到VBE窗口中:
PrivateSubWorksheet_SelectionChange(ByValTargetAsRange)
ThisWorkbook.Names.Add"
XM"
Target
这几行代码的作用是,当选择新的单元格时,将这个单元格(或者区域)定义为名称“XM”,在条件格式设置中可以引用这个名称。
如下面的附件,将代码粘贴完成后,返回工作表中,选择A4:
I15,点击菜单“格式—条件格式”,设置:
公式1:
=(A4<
>
"
)*(A4=XM)
(如果A4不为空,并且A4等于XM)
公式2:
=ROW()=ROW(XM)
(如果当前的行号等于XM的行号)
考场安排.zip(8.93KB)
考场安排.zip(8.93KB)
585
2008-11-1815:
42
试为附件中的考勤表设置条件格式,高亮显示当前行和列。
考勤表.zip(10.86KB)
考勤表.zip(10.86KB)
409
2008-11-1816:
03
引用:
原帖由xpm130于2008-11-1921:
02发表(23楼)
山版好,请您讲讲2楼高亮显示单元行中利用下面代码
Target定义名称的方法与结果与在工作表单元区域进行定义有什么不同之处好吗.我查看起来有点迷糊.
还有,当选中B6时出现如下情形,好像...
用代码定义名称,我们需要它的即时更新,鼠标点到什么,这个名称“XM”就更新什么。
例如,当鼠标点击F7单元格,XM便等于F7,ROW(XM)=7,设置条件格式的区域中,凡是Row()等于7(说白了就是第7行)的单元格便显示背景色。
用手工定义也可得到相同的效果,可以试试。
然后比较一下,用代码的好处是什么。
当选中B6单元格时有不一样的情况出现,是因为区域中设置了两个条件格式,它符合第一个条件便显示第一种格式,符合第二个条件便显示第二个格式。
点击菜单“格式—条件格式”可看清楚。
原帖由pxjxdsj于2008-12-114:
53发表(98楼)
初学有一个问题?
能否把高亮显示单元格做成自动起动的宏,让用户的鼠标单击工作表的某一个单元格后,相应的行和列都显示一种或者两种背景色!
直接用VBA设置背景色,做法如下:
鼠标右键点击工作表标签,选择“查看代码”,将下面代码粘贴到光标处:
DimRngAsRange
SetRng=Target.Range("
a1"
)
Cells.Interior.ColorIndex=0
'
清除所有背景色
Rng.EntireColumn.Interior.ColorIndex=40
设置当前列颜色
Rng.EntireRow.Interior.ColorIndex=36
设置当前行颜色
其中40、36为颜色索引号,不同的数值代表不同的颜色,对应索引如下:
颜色索引.JPG(16.11KB)
2008-12-118:
31
示例:
高亮显示当前行列.zip(8.29KB)
高亮显示当前行列.zip(8.29KB)
231
2008-12-609:
46
3、自动输入当前日期
日期在记录单中是一个很重要的信息。
为了减轻录入的负担,我们有时会希望Excel能自动录入当前日期。
右键点击工作表标签,选择“查看代码”,将下面的代码粘贴到光标处:
PrivateSubWorksheet_Change(ByValTargetAsRange)
IfTarget.Column=1ThenTarget.Offset(0,2)=Date
中间一行是核心代码,意思是:
当第1列(即A列)录入数据时,右边第2列(即C列)输入一个日期。
如果你的要求是“B列(第2列)输入数据后C列(B列的右边第1列)自动输入一个日期”,则中间一行代码应改为:
IfTarget.Column=2ThenTarget.Offset(0,1)=Date
如果你要求“D列(第4列)输入数据后,A列(D列的左边3列)自动输入日期”,则中间一行代码改为:
IfTarget.Column=4ThenTarget.Offset(0,-3)=Date
如果要输入当前时间,怎么办?
代码中,Date表示当前日期,你可以像吃自助餐一样,把Date换成合你口味的东西:
Time:
当前时间
Now:
当前日期时间
自动填写日期.zip(7.85KB)
自动填写日期.zip(7.85KB)
294
2008-11-1915:
29
答案:
自动填写日期答案.zip(10.26KB)
自动填写日期答案.zip(10.26KB)
293
4、自动录入一个“√”
录入过程中,为了反复录入符号“√”,让不少人心烦。
解决的办法可以使用数据有效性,也可以使用VBA,方法很简单。
假如I列要输入“是否三好学生”,如果是,录入一个“√”,因为第1、2行为标题行,从第3行开始,点击鼠标,显示一个“√”。
鼠标右键点击工作表标签,选择“查看代码”,将如下代码粘贴到光标处:
DimRngAsRange
Application.EnableEvents=False
ForEachRngInTarget
IfRng.Row>
2AndRng.Column=9Then'
如果单元格行号大于2并且列号等于9(I列)
Rng=IIf(Rng="
√"
"
)'
如果这个单元格原来是"
,改为空,否则,输入"
EndIf
Application.EnableEvents=True
返回工作表,即可使用该功能。
自动录入一个“√”.zip(35.74KB)
自动录入一个“√”.zip(35.74KB)
176
2008-11-2009:
58
自动录入一个“√”答案.zip(37.81KB)
自动录入一个“√”答案.zip(37.81KB)
208
练习2:
一行中只能录入一个“√”.zip(8.6KB)
一行中只能录入一个“√”.zip(8.6KB)
142
2008-11-2012:
19
原帖由ychh_wy于2008-11-2413:
16发表(77楼)
Ctrl+A容易引起工作表假死
不是“容易”,是“一定”。
如果要避免这种情况发生,可在程序的开头加入一个判断,如果选择整行或整列,退出程序:
'
如果选择的区域是整行或者整列,不运行下面的程序,直接退出。
IfTarget.Rows.Count=Me.Cells.Rows.CountOr_
Target.Columns.Count=Me.Cells.Columns.CountThenExitSub
2AndRng.Column=9Then
实例:
5、自动保护录入的数据
如果希望录入的数据能够被保护,不被删改。
可用程序自动将单元格锁定。
首先,选择单元格区域,按Ctrl+1,打开单元格格式对话框,取消单元格的“锁定”。
然后右键点击工作表标签,选择“查看代码”,将代码粘贴在光标处:
Me.Unprotect("
123"
撤销工作表保护
Rng.Locked=True'
锁定单元格
Me.Protect("
保护工作表
代码中的"
123“是工作表保护密码,可自由修改。
自动保护录入的数据.zip(39.97KB)
自动保护录入的数据.zip(39.97KB)
283
2008-11-2015:
06
原帖由eric0712于2008-12-515:
32发表(114楼)
能否保护的同时取消“选择锁定单元格”?
可以在“Me.Protect("
保护工作表”前面加入一行:
Me.EnableSelection=1
也可先手工设置一次工作表保护,取消该选项,这样代码更简洁。
也许您从不知道Excel有个“属性框”,也许您正在像阿拉丁一样,正在考虑如何擦亮这盏神灯。
如果您已熟悉这一切,请回避,别让我脸红。
我们先来认识一下“属性框”,点击菜单“视图—工具栏—控件工具箱”,点击“属性”按钮,如下图所示。
打开属性框.jpg(381KB)
2008-11-2123:
44
对“工具—选项”不陌生吧?
“选项”是中文版的“属性框”,“属性框”是英文版的“选项”,通过“选项”与“属性框”都用于取得工作表的某方面信息或对工作表的某方面进行控制。
属性框分左右两栏,左边是属性名,右边是对应的值。
如下面的Name是属性名,“通讯录”是它的值。
即这个工作表的名字(标签)为“通讯录”,同时也可以在这里修改它。
属性框.JPG(31.73KB)
上面见到的是工作表的“属性”,不同的对象有不同的属性,从控件工具箱中添加一按钮到工作表,选择它,打开属性框,显示如下:
不同的对象有不同的属性.jpg(209.06KB)
这些属性对我们有什么作用呢?
下面拣几个让大家认识认识。
StandardWidth是工作表中所有列的标准列宽,我们可以试一试,修改它,光标点击StandardWidth右侧的文本框,输入一个值,如16,回车,立即可看到结果。
ScrollArea属性:
返回或设置允许滚动的区域。
工作表属性_编辑区域.zip(9.8KB)
工作表属性_编辑区域.zip(9.8KB)
199
50
EnableCalculation属性:
是否重新计算工作表。
工作表属性_重算模式.zip(191.33KB)
工作表属性_重算模式.zip(191.33KB)
218
2008-11-2322:
51
利用Name属性用单元格的内容命名工作表:
工作表属性_用单元格内容更改工作表标签.zip(6.7KB)
工作表属性_用单元格内容更改工作表标签.zip(6.7KB)
211
57
使用控件制作多级下拉菜单(控件主要属性介绍)
使用控件制作多级下拉菜单
制作多级下拉菜单,数据有效性应该是最好的选择。
为了配合界面的整体效果,使用控件也是可行的,它的制作方法也很简单。
动态下拉菜单.jpg(37.43KB)
2008-11-2416:
08
控件是放置于工作表或窗体上的一些图形对象,能起到较好的装饰作用,当然,显示数据和输入数据是控件的主要用途。
控件有两类,分别从“窗体”和“控件工具箱”中添加。
点击菜单“视图—工具栏”,分别打开“窗体”和“控件工具箱”,比较两类控件,真有点分不清谁是谁的感觉。
简言之,“窗体”控件功能单一,但占用资源较小,“控件工具箱”控件则与之相反。
实际中,应根据需要选择使用。
两者的比较,可参考帖子:
羊和披着羊皮的狼—闲话控件与图形
言归正传,利用控件制作多级下拉菜单,步骤如下:
一、使用窗体控件制作下拉菜单
1、准备基本数据(“省市”、“市县”两表)
2、规划三个单元格(S1:
U1),用于保存三个控件选择结果。
窗体控件(组合框、列表框)的返回值是一个数值,表示选取的项在列表中的序号。
3、设置两个辅助列,根据选择的省份,生成对应的市名列表(T2:
T22)。
另一个是根据选择的市名,生成对应的县名列表(U2:
U27)。
4、按Ctrl+F3打开定义名称对话框,将S、T、U三列数据分别定义为名称“省”、“市”、“县”。
5、添加和设置窗体控件。
①、从窗体工具栏中选择“组合框”和“列表框”,分别添加到工作表中。
②、右键点击控件,选择菜单项“设置控件格式”。
③、根据不同用途的控件,设置其“数据源区域”和“单元格链接”。
应用窗体控件.jpg(198.97KB)
二、使用控件工具箱控件制作下拉菜单
前面的数据准备、辅助列制作、定义名称都与前面介绍的方法相同。
不同的是插入控件后,不是使用“设置控件格式”,而是使用“属性”框。
控件的“ListFillRange”属性用于设置“数据源区域”。
控件的“LinkedCell”属性用于设置“单元格链接”。
(详细见附件)
应用控件工具箱控件.jpg(152.58KB)
附件
用控件制作多级下拉菜单.zip(163.02KB)
7、保护所有工作表
想不明白,为什么不能对工作组设定工作表保护。
好在,用VBA处理起来不算麻烦。
右键点击任一工作表标签,将下面的代码粘贴到光标处:
Sub保护()
DimShAsWorksheet
ForEachShInWorksheets
Sh.Protect
Next
MsgBox"
OK"
将光标定位到该代码的任意位置,按F5运行该代码。
如果要给工作表保护设置密码,可在Protect后面写入密码,用空格分开,密码前后加上半角双引号,假如密码为123:
Sh.Protect"
如果要批量撤销工作表保护,可将命令Protect改为Unprotect,如果有密码,同样在后面写入密码,如:
Sub撤销保护()
Sh.Unprotect"
8、为工作簿创建目录
目录.JPG(26.5KB)
2008-12-813:
38
为工作簿创建目录,方法有多种,下面介绍使用VBA的方法。
1、点击单元格,激活相同名称的工作表。
右键点击“目录”工作表标签,选择“查看代码”,将下面的代码粘贴到光标处:
Sheets(Target.Value).Activate'
激活相同名称的工作表
返回工作表,点击单元格,即可激活名称相同的工作表,与点击工作表标签效果相同。
实际使用中,还需加入一些代码,判断单元格是否为空,单元格是否在规定范围之内等,见附件。
目录.zip(10.29KB)
目录.zip(10.29KB)
149
2、隐藏多余的工作表。
要隐藏多余的工作表,须做两项工作。
首先,在工程管理器中,右键单击模块名“ThisWorkbook”,选择“查看代码”,如下图:
目录2.JPG(32KB)
将下面的代码粘贴到光标处:
PrivateSubWorkbook_SheetDeactivate(ByValShAsObject)
IfSh.Name<
"
目录"
ThenSh.Visible=2'
如果工作表标签不是“目录”,则隐藏它
如果你的工作表标签不是“目录”,而是“主界面”或其它,代码中应根据实际作修改。
第二步,在上面代码中“Sheets(Target.Value).Activate”前面插入一行:
Sheets(Target.Value).Visible=1'
取消隐藏,显示工作表
效果见附件:
目录2.zip(11.13KB)
目录2.zip(11.13KB)
105
3、隐藏目录工作表。
在各工作表适当的地方,设置一个内容为“返回目录”的单元格,为了点击这个单元格,能够激活目录工作表,将下面的代码粘贴到模块“ThisWorkbook”下:
Sh.Visible=2'
隐藏非活动状态的工作表
PrivateSubWorkbook_SheetSelectionChange(ByValShAsObject,ByValTargetAsRange)
IfTarget.Count=1AndTarget.Range("
)="
返回目录"
Then'
如果点击的单元格内容为“返回目录”
Target.Offset
(1).Activate
Sheets("
).Visible=1'
将目录工作表取消隐藏
).Activate'
激活目录工作表
见附件:
目录3.zip(12.08KB)
目录3.zip(12.08KB)
126
9、插入工作表
我们的问题总是来自工作实际。
激活目录中指定的工作表,如yql4688所说,不但实用,而