畅享博客 > ITSM-适境而为 > IT技术-[Excel VBA] > [分享][Excel VBA]宏的启动;快速输入时间;有效性的自动扩展
2007-3-21 15:22:38

[分享][Excel VBA]宏的启动;快速输入时间;有效性的自动扩展

AutoExec宏:启动Word XP或加载全局模板触发。
AutoNew宏:生成新文档时触发。
AutoOpen宏:打开已有文档时触发。
AutoClose宏:关闭文档时触发。
AutoExit宏:退出Word XP或卸载全局模板时触发。

前述的自动宏,除“AutoExec”宏必须保存在“Startup”文件夹的 Normal 模板或共用模板中才可自动运行外,其他均可保存于Normal 模板、其他模板或文档中。在文档打开时按Shift键可终止自动宏的运行。

************************************************************

快速输入时间法(此方法仅适用一个单元格的时间快速输入)

Sub Auto_Open()

     Application.OnEntry = "Fast" ’每当工作表内容发生变化时就运行指定过程

    End Sub

    Sub Fast()

     On Error GoTo EnterError  ’如果有错误就跳往EnterError语句

     If Intersect(Application.Caller, Range("受理时间")) Is Nothing Then

        Exit Sub ’如果是非″受理时间″区域的单元格被改变,则结束过程

     End If

     ’如果输入值小于1或者大于2400,则显示对话框用户输入值非法

     If Application.Caller < 1 Or Application.Caller > 2400 Then

        MsgBox "对不起,您的输入值非法!", vbExclamation

        Application.Caller.Value = " "

        Exit Sub

     End If

     ’将输入值改成 HH: MM格式

     Application.Caller.Value = Format(Application.Caller, "00:00")

        Exit Sub

EnterError:

     Exit Sub

    End Sub

****************************************************

Excel有效性的函数使用

1、自动增长式序列=offset($A$1,0,0,CountA($A:$A),1)
                  OFFSET(reference,rows,cols,height,width)

2、自适应序列=indirect(A1) ,根据前项,自动显示对应的子项

[应用一]下拉菜单输入的实现

例1:直接自定义序列
有时候我们在各列各行中都输入同样的几个值,比如说,输入学生的等级时我们只输入四个值:优秀,良好,合格,不合格。我们希望Excel2000单元格能够象下拉框一样,让输入者在下拉菜单中选择就可以实现输入。
操作步骤:先选择要实现效果的行或列;再点击"数据\有效性",打开"数据有效性"对话框;选择"设置"选项卡,在"允许"下拉菜单中选择"序列";在"数据来源"中输入"优秀,良好,合格,不合格"(注意要用英文输入状态下的逗号分隔!);选上"忽略空值"和"提供下拉菜单"两个复选框。点击"输入信息"选项卡,选上"选定单元格显示输入信息",在"输入信息"中输入"请在这里选择"。

例2:利用表内数据作为序列源。
有时候序列值较多,直接在表内打印区域外把序列定义好,然后引用。
操作步骤:先在同一工作表内的打印区域外要定义序列填好(假设在在Z1:Z8),如“单亲家庭,残疾家庭,残疾学生,特困,低收人,突发事件,孤儿,军烈属”等,然后选择要实现效果的列(资助原因);再点击"数据\有效性",打开"数据有效性"对话框;选择"设置"选项卡,在"允许"下拉菜单中选择"序列";“来源”栏点击右侧的展开按钮(有一个红箭头),用鼠标拖动滚动条,选中序列区域Z1:Z8(如果记得,可以直接输入=$Z$1:$Z$8;选上"忽略空值"和"提供下拉菜单"两个复选框。点击"输入信息"选项卡,选上"选定单元格显示输入信息",在"输入信息"中输入"请在这里选择"。

例3:横跨两个工作表来制作下拉菜单
用INDIRECT函数实现跨工作表

在例2中,选择来源一步把输入=$Z$1:$Z$8换成=INDIRECT("表二!$Z$1:$Z$8"),就可实现横跨两个工作表来制作下拉菜单。

[应用二]自动实现输入法中英文转换

有时,我们在不同行或不同列之间要分别输入中文和英文。我们希望Excel能自动实现输入法在中英文间转换。
操作步骤:假设我们在A列输入学生的中文名,B列输入学生的英文名。先选定B列,点击进入"数据\有效性",打开"数据有效性"对话框;选择"输入法"对话框,在"模式"下拉菜单中选择"关闭(英文模式)";然后再"确定",看看怎么样。


[应用三]数据唯一性检验

员工的身份证号码应该是唯一的,为了防止重复输入,我们用“数据有效性”来提示大家。

操作步骤:选中需要建立输入身份证号码的单元格区域(如B2至B14列),执行“数据→有效性”命令,打开“数据有效性”对话框,在“设置”标签下,按“允许”右侧的下拉按钮,在随后弹出的快捷菜单中,选择“自定义”选项,然后在下面“公式”方框中输入公式:=COUNTIF(B:B,B2)=1,确定返回。以后在上述单元格中输入了重复的身份证号码时,系统会弹出提示对话框,并拒绝接受输入的号码。


推荐到鲜果: 查阅更多相关主题的帖子: 服务管理

评论

您正在以 匿名用户 的身份发表评论  快速登录
(不得超过 50 个汉字)
       看不清,换一个
提示消息
(输入完内容可以直接按Ctrl+Enter提交)