ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
楼主: yuanzhuping

VBA常用技巧代码解析

    [复制链接]

TA的精华主题

TA的得分主题

发表于 2009-3-3 06:37 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

技巧19 单元格录入数据后自动保护

本帖已被收录到知识树中,索引项:开发帮助和教程
原代码无任何保护作用,因为SelectionChange触发,就会解除工作表保护,思路有问题。
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
   On Error Resume Next
   If Sheet1.Protection = False Then Sheet1.Protect Password:="12345"
   If Target.Value <> "" Then Target.Locked = True
End Sub
可以在BeforeDoubleClick事件中加入确需修改过程,提示工作表保护密码输入,解除表保护,限定密码错误重新输入次数

TA的精华主题

TA的得分主题

 楼主| 发表于 2009-3-3 07:15 | 显示全部楼层
原帖由 guo7799 于 2009-3-3 06:37 发表
原代码无任何保护作用,因为SelectionChange触发,就会解除工作表保护,思路有问题。
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
   On Error Resume Next
   If Sheet1.Protection = False  ...

我不知你有没有没测试过,不错,第二句代码是解除了工作表的保护,但此技巧是保护工作表中已录入数据的单元格,只要不是空白单元格,下面还有保护工作表的代码,怎么无任何保护作用了?

TA的精华主题

TA的得分主题

发表于 2009-3-3 10:43 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
抱歉,刚测试了,代码正确!

TA的精华主题

TA的得分主题

发表于 2009-3-3 11:20 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
谢谢版主,好东西得好好收藏和学习

TA的精华主题

TA的得分主题

 楼主| 发表于 2009-3-3 14:21 | 显示全部楼层

第4部分 Shape(图形)、Chart(图表)对象

技巧55         在工作表中添加艺术字
       在工作表中插入艺术字,可以使用AddTextEffect方法,如下面的代码所示。
  1. #001  Sub TextEffect()
  2. #002      Dim myShape As Shape
  3. #003      On Error Resume Next
  4. #004      Sheet1.Shapes("myShape").Delete
  5. #005      Set myShape = Sheet1.Shapes.AddTextEffect _
  6. #006              (PresetTextEffect:=msoTextEffect15, _
  7. #007              Text:="我爱 Excel Home", FontName:="宋体", FontSize:=36, _
  8. #008              FontBold:=msoFalse, FontItalic:=msoFalse, _
  9. #009              Left:=100, Top:=100)
  10. #010      With myShape
  11. #011          .Name = "myShape"
  12. #012          With .Fill
  13. #013              .Solid
  14. #014              .ForeColor.SchemeColor = 55
  15. #015              .Transparency = 0
  16. #016          End With
  17. #017          With .Line
  18. #018              .Weight = 1.5
  19. #019              .DashStyle = msoLineSolid
  20. #020              .Style = msoLineSingle
  21. #021              .Transparency = 0
  22. #022              .ForeColor.SchemeColor = 12
  23. #023              .BackColor.RGB = RGB(255, 255, 255)
  24. #024          End With
  25. #025      End With
  26. #026      Set myShape = Nothing
  27. #027  End Sub
复制代码
代码解析:
       TextEffect过程在工作表中插入艺术字并设置其格式。
       第3、4行代码删除工作表中可能存在的艺术字,以免重复添加。
       第5行到第9行代码使用AddTextEffect方法在工作表中插入艺术字,AddTextEffect方法创建艺术字对象。返回一个Shape对象,该对象代表新建的艺术字对象,语法如下:
expression.AddTextEffect(PresetTextEffect, Text, FontName, FontSize, FontBold, FontItalic, Left, Top)
       参数expression是必需的,返回一个Shapes对象。
       参数PresetTextEffect是必需的,艺术字预置文本效果,可为MsoPresetTextEffect 常量之一,等同于在工作表中插入艺术字时的样式选项卡,如图所示。
Snap1.jpg
       参数Text是必需的,艺术字对象中的文字。
       参数FontName是必需的,艺术字对象中所用的字体名称。
       参数FontSize是必需的,以磅为单位给出艺术字对象中所用的字体大小。
       参数FontBold是必需的,在艺术字中要加粗的字体。
       参数FontItalic是必需的,在艺术字中要倾斜的字体。
       参数Left和参数Top是必需的,相对于文档的左上角、顶部,以磅为单位给出艺术字对象边框左上角的位置。
       第11行代码将艺术字对象重命名为“myShape”。
       第12行到第16行代码设置艺术字对象的填充格式。其中第13行代码将填充格式设置为均一的颜色,应用于FillFormat 对象的Solid方法将指定的填充格式设置为均一的颜色,可用本方法将带有渐进色、纹理、图案或背景的填充格式转换为单色的填充格式。第14行代码设置填充的颜色。第15行代码设置填充的透明度。
       第17行到第24行代码设置艺术字对象的线条格式属性。其中第18行代码设置线条粗细,第19行代码设置线条虚线样式,第20行代码设置线条区域的样式,第21行代码设置线条的透明度,第22行代码设置前景色,第23行代码设置填充背景的颜色。
       运行TextEffect过程工作表中如图所示。
Snap2.jpg

技巧55 在工作表中添加艺术字.rar

13.51 KB, 下载次数: 1838

TA的精华主题

TA的得分主题

发表于 2009-3-3 15:36 | 显示全部楼层
多谢斑竹,持续支持中!!!!!

TA的精华主题

TA的得分主题

发表于 2009-3-3 19:55 | 显示全部楼层
谢谢版主无私的奉献,收藏学习!

TA的精华主题

TA的得分主题

 楼主| 发表于 2009-3-3 21:33 | 显示全部楼层

第4部分 Shape(图形)、Chart(图表)对象

技巧56         遍历工作表中的图形
       工作表中的多个图形,如果使用系统缺省名称,如“文本框1”、“文本框2”这样前面是固定的字符串,后面是序号的,可以使用For...Next 语句遍历图形,如下面的代码所示。
  1. #001  Sub ErgShapes_1()
  2. #002      Dim i As Integer
  3. #003      For i = 1 To 4
  4. #004          Sheet1.Shapes("文本框 " & i).TextFrame.Characters.Text = ""
  5. #005      Next
  6. #006  End Sub
复制代码
代码解析:
       ErgShapes_1过程清除工作表中四个图形文本框中的文字。
       第3行到第5行代码,使用Shapes属性在工作表上的三个图形文本框中循环。
       Shapes属性返回Shapes对象,代表工作表或图形工作表上的所有图形,可以使用Shapes(index)返回单个的Shape对象,其中index是图形的名称或索引号。
       返回单个的Shape对象后使用TextFrame 属性和Characters方法清除文本框中的字符,关于Shape对象的TextFrame 属性和Characters方法请参阅技巧53 。
       如果图形的名称没有规律,可以使用For Each...Next 语句循环遍历所有图形,根据Type属性返回的图形类型进行相应的操作,如下面的代码所示。
  1. #001  Sub ErgShapes_2()
  2. #002      Dim myShape As Shape
  3. #003      Dim i As Integer
  4. #004      i = 1
  5. #005      For Each myShape In Sheet1.Shapes
  6. #006          If myShape.Type = msoTextBox Then
  7. #007              myShape.TextFrame.Characters.Text = "这是第" & i & "个文本框"
  8. #008              i = i + 1
  9. #009          End If
  10. #010      Next
  11. #011  End Sub
复制代码
代码解析:
       ErgShapes_2过程在工作表中的所有图形文本框中写入文本。
       第5行代码使用For Each...Next 语句循环遍历工作表中所有的图形对象。
       第6行到第9行代码如果图形对象是文本框则在文本框中写入文本。其中第6行代码根据Type属性判断图形对象是否为文本框,应用于Shape对象的Type属性返回或设置图形类型,MsoShapeType类型,如表格所示。
Snap1.jpg
       第7行代码根据返回的Type属性值在所有的文本框内写入相应的文本,如图所示。
Snap1.jpg

[ 本帖最后由 yuanzhuping 于 2009-3-4 21:50 编辑 ]

技巧56 遍历工作表中的图形.rar

8.49 KB, 下载次数: 1746

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2009-3-3 21:38 | 显示全部楼层
版主辛苦,一直跟着您学习,
感激不尽,总算是入门了,前二个部分基本可以应用到实际中了

TA的精华主题

TA的得分主题

发表于 2009-3-4 08:28 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-5-2 15:33 , Processed in 0.050938 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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