ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

不懂VBA也编程

  [复制链接]

TA的精华主题

TA的得分主题

发表于 2008-11-18 12:50 | 显示全部楼层 |阅读模式
本帖已被收录到知识树中,索引项:数据类型和基本语句

评分

13

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2008-11-18 12:52 | 显示全部楼层

1、在Excel中玩转邮件合并

打印准考证、成绩报告单、商品标签、入场券等,常常会使用Word的邮件合并工具。在Excel中批量打印的功能也不错,方法见附件:
xiabaoyuan_在线扳手、枪校验记录表单.zip (86.71 KB, 下载次数: 8318)

附件来自帖子:http://club.excelhome.net/viewthread.php?tid=369570

练习:

附件:下载
帖子:http://club.excelhome.net/thread-371082-1-1.html

1、选择N6单元格输入“当前行号”。
2、编写公式:
    J3=INDEX(Sheet2!B:B,N6)
    B4=INDEX(Sheet2!A:A,N6)
    F4=INDEX(Sheet2!C:C,N6)
    ……
3、从控件工具箱中添加一按钮到工作表,编辑标签文字,双击按钮,将前面文件中的代码复制到此:
  1. Private Sub CommandButton1_Click()
  2.     For i = [N7] To [N8]
  3.     [N6] = i
  4.     Me.PrintOut
  5.     Next
  6. End Sub
复制代码
将3个单元格名称修改为[N6]、[N7]、[N8]。
其中N7单元格输入“开始行号”、N8单元格输入“结束行号”。
4、添加窗体工具箱中的微调按钮到工作表,将链接单元格设为N6。
5、点击控件工具箱中的“退出设计模式”按钮,测试。

TA的精华主题

TA的得分主题

发表于 2008-11-18 13:15 | 显示全部楼层


TA的精华主题

TA的得分主题

发表于 2008-11-18 13:45 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2008-11-18 15:42 | 显示全部楼层

2、高亮显示当前行

用条件格式设置高亮显示当前行,难的是如何确定当前行。用VBA就很简单,鼠标右击工作表标签,选择“查看代码”,将下面的代码粘贴到VBE窗口中:
  1. Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  2. ThisWorkbook.Names.Add "XM", Target
  3. End Sub
复制代码
这几行代码的作用是,当选择新的单元格时,将这个单元格(或者区域)定义为名称“XM”,在条件格式设置中可以引用这个名称。

如下面的附件,将代码粘贴完成后,返回工作表中,选择A4:I15,点击菜单“格式—条件格式”,设置:
公式1:=(A4<>"")*(A4=XM)
(如果A4不为空,并且A4等于XM)
公式2:=ROW()=ROW(XM)
(如果当前的行号等于XM的行号)
考场安排.zip (8.93 KB, 下载次数: 3645)

练习:
试为附件中的考勤表设置条件格式,高亮显示当前行和列。
考勤表.zip (10.86 KB, 下载次数: 2612)

原帖由 xpm130 于 2008-11-19 21:02 发表 (23楼)
山版好,请您讲讲2楼高亮显示单元行中利用下面代码
ThisWorkbook.Names.Add "XM", Target定义名称的方法与结果与在工作表单元区域进行定义有什么不同之处好吗.我查看起来有点迷糊.
还有,当选中B6时出现如下情形,好像 ...

用代码定义名称,我们需要它的即时更新,鼠标点到什么,这个名称“XM”就更新什么。
例如,当鼠标点击F7单元格,XM便等于F7,ROW(XM)=7,设置条件格式的区域中,凡是Row()等于7(说白了就是第7行)的单元格便显示背景色。
用手工定义也可得到相同的效果,可以试试。然后比较一下,用代码的好处是什么。

当选中B6单元格时有不一样的情况出现,是因为区域中设置了两个条件格式,它符合第一个条件便显示第一种格式,符合第二个条件便显示第二个格式。
点击菜单“格式—条件格式”可看清楚。

原帖由 pxjxdsj 于 2008-12-1 14:53 发表 (98楼)


初学有一个问题?能否把 高亮显示单元格 做成 自动起动的宏,让用户的鼠标单击工作表的某一个单元格后,相应的行和列都显示一种 或者 两种背景色!


直接用VBA设置背景色,做法如下:
鼠标右键点击工作表标签,选择“查看代码”,将下面代码粘贴到光标处:
  1. Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  2. Dim Rng As Range
  3. Set Rng = Target.Range("a1")
  4. Cells.Interior.ColorIndex = 0  '清除所有背景色
  5. Rng.EntireColumn.Interior.ColorIndex = 40  '设置当前列颜色
  6. Rng.EntireRow.Interior.ColorIndex = 36  '设置当前行颜色
  7. End Sub
复制代码
其中40、36为颜色索引号,不同的数值代表不同的颜色,对应索引如下:
颜色索引.JPG
示例: 高亮显示当前行列.zip (8.29 KB, 下载次数: 1929)

原帖由 zjyhljx 于 2009-2-16 17:39 发表 (259楼)
如果工作簿中的每张工作表都有相同效果,应该怎么做?

按Alt+F11打开VBE编辑器,在工程管理器中双击模块“ThisWorkbook”,将下面的代码粘贴到光标处:
  1. Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
  2. Dim Rng As Range
  3. Set Rng = Target.Range("a1")
  4. Cells.Interior.ColorIndex = 0  '清除所有背景色
  5. Rng.EntireColumn.Interior.ColorIndex = 40  '设置当前列颜色
  6. Rng.EntireRow.Interior.ColorIndex = 36  '设置当前行颜色
  7. End Sub
复制代码
如下图所示:
VBE.jpg
为所有工作表设置高亮背景色.zip (6.64 KB, 下载次数: 1090)

原帖由 Magic_sh 于 2009-2-20 12:58 发表 (274楼)
山菊花楼主,你好!
关于之前有人问到的关于高亮显示行和列的问题,你提供的VBA代码如下,但我现在碰到点问题,发现使用了这个代码后,表中的“复制”和“拷贝”功能就被禁止了,不知有无办法可以解决?谢谢!

可在代码第二行(清除颜色之前就行)插入一行代码:
If Application.CutCopyMode Then Exit Sub ’如果处于选取状态则退出程序
  1. Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
  2. If Application.CutCopyMode Then Exit Sub '如果处于选取状态则退出程序
  3. Dim Rng As Range
  4. Set Rng = Target.Range("a1")
  5. Cells.Interior.ColorIndex = 0  '清除所有背景色
  6. Rng.EntireColumn.Interior.ColorIndex = 40  '设置当前列颜色
  7. Rng.EntireRow.Interior.ColorIndex = 36  '设置当前行颜色
  8. End Sub
复制代码

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2008-11-18 15:49 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
学习了!代码与自代功能的完美结合,顶!

TA的精华主题

TA的得分主题

发表于 2008-11-18 17:20 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2008-11-18 21:09 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2008-11-19 08:27 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
学习中……

TA的精华主题

TA的得分主题

发表于 2008-11-19 11:15 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
“山菊花”是我久仰的诲人不倦的大师! 跟着学习了!
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-18 19:37 , Processed in 0.038872 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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