ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 2624|回复: 3

超管用的VBA一句话代码

[复制链接]

TA的精华主题

TA的得分主题

发表于 2013-7-17 15:11 | 显示全部楼层 |阅读模式
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
有时候,一些看似很难的问题或应用,竟然用一句代码就可以搞定!下面是我举的一些例子,也希望大家参与讨论,把你平常所用的一句代码共享出来,我加以整理,放到这里大家共享。

一句话代码:
1、组合框的循环选择
        在双击事件中加入,也可用在键盘按上下箭头事件中:
         Screen.ActiveControl.ListIndex = (Screen.ActiveControl.ListIndex + 1) Mod Screen.ActiveControl.ListCount

2、窗体单击及移动记录时选定记录(反黑显示)
       在成为当前事件中加入:
        DoCmd.RunCommand acCmdSelectRecord

3、组合框获得焦点后自动张开
      在获得焦点事件中加入:
        Combo0.Dropdown

4、文本框获得焦点后光标自动移动到文本的末尾
      在获得焦点事件(如有必要也在鼠标释放事件)中加入:
      Text0.SelStart = Len(Text0)

5、随机抽取指定数量记录的查询
     在查询语句中Rnd([编号]) 的编号为表中的自动编号字段名:
      Select TOP 10 *  FROM 表1 orDER BY Rnd([编号]);

6、打印窗体中筛选显示的记录
     报表的记录源要与窗体的记录源相同,在窗体的打印按钮单击事件中:
      DoCmd.OpenReport "报表名", acViewPreview, ,
Me.Filter

7、同时去除窗体及所有子窗体的筛选及排序
     跟单击“记录”菜单中的“取消筛选/排序”作用相同:
      DoCmd.ShowAllRecords

8、数据更改后提醒是否保存
     在窗体的更新后事件中(Form_BeforeUpdate):
      If Not (Cancel = (MsgBox("数据已更改,是否保存?", vbOKCancel + vbQuestion) = vbCancel)) Then DoCmd.DoMenuItem acFormBar, acEditMenu, acUndo, , acMenuVer70

9、选定一个选项或输入编码,在其他字段自动把与选项相关信息辅助录入(即一拖几,由编码自动输入名称等)
    在文本框或组合框的更新后事件中,用Dlookup函数查找相关信息并辅值给当前记录其他字段:
      供货商=DLookup("公司名称", "供货商资料", "[供货商编号]= '" & Me![供货商编号] & "'")

10、设置字段的默认值为当前表的最后一条记录的值(或序号、最大值加1:用Dmax代替Dlast)
    在窗体的成为当前事件中,用Dlast函数查找最后记录相关值并辅值给字段的默认值:
     成绩.DefaultValue = "'" & DLast("成绩", Me.RecordSource) & "'"

11、删除重复记录(字段)
    表中要有自动编号字段(ID),可建立删除查询或执行RunSql语句(其中[  ]填写对应的表名、重复字段名、关键字段名):
    Delete * FROM [表] Where DCount("[字段]","[表]","[字段]='" & [字段] & "'")>1 AND [ID]>DLookUp("[ID]","[表]","[字段]='" & [字段] & "'") or [字段] Is Null;

12、班级成绩排名查询、生成名次或临时序号
    可根据年级、班级和不同科目替换查询中的相应字段名:
     Select *, [英语]+[数学]+[语文] AS 总分, DCount("*","成绩表","[年级]='" & [年级] & "' and ([英语]+[数学]+[语文])>" & [英语]+[数学]+[语文])+1 AS 年级名次 FROM 成绩表 orDER BY 成绩表.年级, [英语]+[数学]+[语文] DESC;

13、防止公式文本框引起窗体抖动
    如果窗体中使用了计算公式作为文本框的数据源,这可能会导致窗体一打开或者移动鼠标等引起窗体刷新时,窗体不停的抖动,这可在窗体的加载事件或激活时间中加入:
    Me.Recalc

14、查找与该控件匹配的记录(用组合框查找记录)
    如何使窗体转到组合框或文本框中输入的指定记录,用组合框的向导中可以自动生成语句,也可在控件的更新后事件中使用下面一句语句:
    Me.Recordset.FindFirst "[ID] = " & Str(Nz(Me![Combo1], 0))

评分

2

查看全部评分

TA的精华主题

TA的得分主题

发表于 2013-7-17 15:24 | 显示全部楼层
向楼主学习……            

TA的精华主题

TA的得分主题

发表于 2013-7-20 16:51 | 显示全部楼层
张sir已经贴了不少好东西了。

TA的精华主题

TA的得分主题

发表于 2014-2-13 11:07 | 显示全部楼层
向您致敬!学了不少东西,希望大家都来啊
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-17 12:25 , Processed in 0.041294 second(s), 13 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表