ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

VBA常用技巧代码解析

    [复制链接]

TA的精华主题

TA的得分主题

 楼主| 发表于 2009-3-19 22:16 | 显示全部楼层
本帖已被收录到知识树中,索引项:开发帮助和教程
原帖由 menghuazhang 于 2009-3-19 20:00 发表
袁版主,您好:
   技巧10         禁用单元格拖放功能。我发现,单元格被禁用拖放功能后如果想复制该单元格所在的行到另外一个工作簿的某一行,粘贴功能被禁止。

   也就是说,单元格被禁用拖放功能后是不能进行 ...

即然禁用了拖放功能也就禁用了复制粘贴功能,鱼和熊掌不可兼得。

[ 本帖最后由 yuanzhuping 于 2009-4-2 20:02 编辑 ]

TA的精华主题

TA的得分主题

 楼主| 发表于 2009-3-19 22:17 | 显示全部楼层
原帖由 zgs514 于 2009-3-19 22:09 发表
感谢楼主,提一个问题,在工作簿中当选定某一工作表时自定义菜单显现,而选定其他表自定义菜单隐藏的代码如何写

工作表的Private Sub Worksheet_Activate()事件中添加,Private Sub Worksheet_Deactivate()事件中删除。

[ 本帖最后由 yuanzhuping 于 2009-4-2 20:03 编辑 ]

TA的精华主题

TA的得分主题

发表于 2009-3-20 11:58 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2009-3-20 12:50 | 显示全部楼层

太好了

版主辛苦了,我已照单全收了,谢谢

TA的精华主题

TA的得分主题

发表于 2009-3-20 21:04 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
来学东西了

TA的精华主题

TA的得分主题

发表于 2009-3-20 22:22 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2009-3-21 00:01 | 显示全部楼层
先下着吧,等有空再看

TA的精华主题

TA的得分主题

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

第7部分 菜单和工具栏

技巧89         创建自定义工具栏
       为了方便用户操作,在Excel原有的的工具栏上,还可以创建自定义的工具栏,如下面的代码所示。
  1. #001  Sub NowToolbar()
  2. #002      Dim arr As Variant
  3. #003      Dim id As Variant
  4. #004      Dim i As Integer
  5. #005      Dim Toolbar As CommandBar
  6. #006      On Error Resume Next
  7. #007      Application.CommandBars("MyToolbar").Delete
  8. #008      arr = Array("会计凭证", "会计账簿", "会计报表", "凭证打印", "账簿打印", "报表打印")
  9. #009      id = Array(9893, 284, 9590, 9614, 707, 986)
  10. #010      Set Toolbar = Application.CommandBars.Add("MyToolbar", msoBarTop)
  11. #011          With Toolbar
  12. #012              .Protection = msoBarNoResize
  13. #013              .Visible = True
  14. #014              For i = 0 To 5
  15. #015                  With .Controls.Add(Type:=msoControlButton)
  16. #016                      .Caption = arr(i)
  17. #017                      .FaceId = id(i)
  18. #018                      .BeginGroup = True
  19. #019                      .Style = msoButtonIconAndCaptionBelow
  20. #020                  End With
  21. #021              Next
  22. #022          End With
  23. #023      Set Toolbar = Nothing
  24. #024  End Sub
复制代码

代码解析:
       NowToolbar过程使用Add方法在Excel窗口中创建自定义工具栏。应用于CommandBars对象的Add方法请参阅技巧83 。
       第10行代码,使用Add方法在菜单栏上创建名称为“MyToolbar”的命令栏,创建时设置新命令栏的Position参数为msoBarTop,使新命令栏位于应用程序窗口的顶部。如果将Position参数设置成msoBarFloating,新命令栏为浮动工具栏,如图所示。
Snap1.jpg
       关于Position参数的MsoBarPosition常数请参阅技巧83。
       第12行代码,设置“MyToolbar”命令栏的Protection属性为msoBarNoResize。应用于CommandBar对象的Protection属性指定命令栏的保护类型,可以为表格所列的MsoBarProtection常数之一。
MsoBarProtection常数.jpg
       第14行到第21代码,使用Add方法在新命令栏中添加按钮控件,设置按钮控件的各项属性。其中第19行代码,设置按钮控件的Style属性为msoButtonIconAndCaptionBelow,使工具栏按钮显示时包含图标和标题,且标题位于图标之下。
       应用于CommandBar对象的Style属性返回或设置工具栏按钮的显示方式,可以为表格所列的MsoButtonStyle常数之一。
MsoButtonStyle常数.jpg
       运行NowToolbar过程,将在Excel窗口的顶部创建一个自定义的工具栏,如图所示。
Snap4.jpg

技巧89 创建自定义工具栏.rar

7.26 KB, 下载次数: 1311

TA的精华主题

TA的得分主题

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

第7部分 菜单和工具栏

技巧90         自定义工具栏按钮图标
       在创建自定义的工具栏时,除了可以为工具栏按钮添加Excel内置的图标外,还能为工具栏按钮添加自定义的图标,如下面的代码所示。
  1. #001  Sub AddCustomButton()
  2. #002      Dim xBar As CommandBar
  3. #003      Dim xButton As CommandBarButton
  4. #004      On Error Resume Next
  5. #005      Application.CommandBars("CustomBar").Delete
  6. #006      Set xBar = CommandBars.Add("CustomBar", msoBarTop)
  7. #007      Set xButton = xBar.Controls.Add(msoControlButton)
  8. #008      With xButton
  9. #009          .Picture = LoadPicture(ThisWorkbook.Path & "\P.BMP")
  10. #010          .Mask = LoadPicture(ThisWorkbook.Path & "\M.BMP")
  11. #011          .TooltipText = "Excel Home 论坛"
  12. #012      End With
  13. #013      xBar.Visible = True
  14. #014      Set xBar = Nothing
  15. #015      Set xButton = Nothing
  16. #016  End Sub
复制代码
代码解析:
       AddCustomButton过程创建自定义工具栏,并设置工具栏的按钮自定义图标。
       第6、7行代码,使用Add方法在Excel窗口中添加自定义工具栏和按钮。请参阅技巧89 。
       第9行代码,设置工具栏按钮的Picture属性为同一目录中的p.bmp图片。
       应用于CommandBarButton 对象的Picture属性返回一个IPictureDisp对象,表示 CommandBarButton对象的图像,语法如下:
expression.Picture
       参数是必需的,返回一个CommandBarButton对象。
       指定对象的Picture属性就能设置对象的图像。
       第10行代码,设置工具栏按钮的Mask属性为同一目录中的m.bmp图片。
       为了使工具栏按钮图标透明显示,在指定对象的Picture属性后,还需要指定对象的Mask属性。
       应用于CommandBarButton 对象的Mask属性返回表示CommandBarButton对象的屏蔽图像的IPictureDisp对象,语法如下:
expression.Mask
       参数是必需的,返回一个CommandBarButton对象。
       屏蔽图像决定按钮图像透明的部分。在创建作为屏蔽图像使用的图像时,所有要透明的区域应该为白色,所有要显示的区域应该为黑色。
       第11行代码,设置按钮的“屏幕提示”为“ExcelHome论坛”。
       运行AddCustomButton过程,创建自定义工具栏,并设置工具栏按钮的图标,如图所示。
Snap1.jpg

技巧90 自定义工具栏按钮图标.rar

8.86 KB, 下载次数: 1262

TA的精华主题

TA的得分主题

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

第7部分 菜单和工具栏

技巧91         自定义工作簿图标
      Excel标题栏的图标是默认的,而借助API函数可以自定义工作簿标题栏图标,如下面的代码所示。
  1. #001  Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
  2. #002  Private Declare Function DrawMenuBar Lib "user32" (ByVal hWnd As Long) As Long
  3. #003  Private Declare Function SetFocus Lib "user32" (ByVal hWnd As Long) As Long
  4. #004  Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Integer, ByVal lParam As Long) As Long
  5. #005  Private Declare Function ExtractIcon Lib "shell32.dll" Alias "ExtractIconA" (ByVal hInst As Long, ByVal lpszExeFileName As String, ByVal nIconIndex As Long) As Long
  6. #006  Private Const WM_SETICON = &H80
  7. #007  Private Sub Workbook_Open()
  8. #008      Dim IStyle As Long
  9. #009      Dim hIcon As Long
  10. #010      Dim hWndForm As Long
  11. #011      hWndForm = FindWindow(vbNullString, Application.Caption)
  12. #012      hIcon = ExtractIcon(0, ActiveWorkbook.Path & "\p.bmp", 0)
  13. #013      SendMessage hWndForm, WM_SETICON, True, hIcon
  14. #014      SendMessage hWndForm, WM_SETICON, False, hIcon
  15. #015  End Sub
复制代码
代码解析:
       工作簿打开后使用API函数自定义工作簿标题栏的图标。
       第1行到第6行代码,API函数声明。
       第7行到第15行代码,工作簿的Open事件过程,把工作簿标题栏默认的图标更改为同一文件夹下的p.bmp图片。
       工作簿打开后标题栏如图所示。
       Snap6.jpg
       任务栏图标如图所示。
       Snap5.jpg

技巧91 自定义工作簿图标.rar

45.71 KB, 下载次数: 1250

您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-15 01:52 , Processed in 0.045238 second(s), 7 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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