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-5-6 17:10 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

询问

本帖已被收录到知识树中,索引项:开发帮助和教程
袁版主:您好!
   请问一下:窗体显示在工作表中的初始位置,除了设置“StartUpPosition属性为0-手动、1-所有者中心、2-屏幕中心、3-窗口缺省”外。可不可以按照自己的意愿设置呀?如位于焦点的正下方!谢谢!

TA的精华主题

TA的得分主题

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

努力啊同志们

学习再学习

TA的精华主题

TA的得分主题

发表于 2009-5-6 22:44 | 显示全部楼层

回复 955楼 ykx042907 的帖子

Private Sub UserForm_Initialize()     '窗体加载事件
    UserForm1.Left = 100               '窗体左边离屏幕边的距离
    UserForm1.Top = 150                  '窗体上边离屏幕顶的距离
End Sub
也可直接在窗体属性中设置

[ 本帖最后由 ayu330602 于 2009-5-6 22:47 编辑 ]

TA的精华主题

TA的得分主题

发表于 2009-5-6 23:04 | 显示全部楼层
原帖由 yuanzhuping 于 2009-5-6 07:18 发表

ListView控件的列宽调整用Width属性,如第一列:ListView1.ColumnHeaders(1).Width = 100
将ListView控件的LabelEdit属性设置为lvwManual,标签不能编辑。

谢谢老师:
     我的第二个问题的意思是:当窗体弹出后,让第一列的宽度不能在窗体上变动,其它的列还是可以调整? 如果这样实现不了的话,全部不能调整应该可以的吧?
谢谢指导!
    另外请老师把改变光标中的手写字.cur文件贴上分享好吗?

[ 本帖最后由 ayu330602 于 2009-5-6 23:10 编辑 ]

TA的精华主题

TA的得分主题

 楼主| 发表于 2009-5-7 07:18 | 显示全部楼层

第8部分 控件与用户窗体

技巧142         调整窗体的显示位置
       用户窗体显示时,默认的位置是窗体所在Excel文件的中央。如果需要调整,可以在窗体加载时对其进行设置,如下面的代码所示。
  1. #001  Private Sub UserForm_Initialize()
  2. #002      With Me
  3. #003          .StartUpPosition = 0
  4. #004          .Left = 500
  5. #005          .Top = 300
  6. #006      End With
  7. #007  End Sub
复制代码
代码解析:
       窗体的初始化事件,在窗体加载时设置其显示位置。
       第3行代码,将窗体的StartUpPosition属性设置成手动。
       StartUpPosition属性返回或设置一个值,用来指定窗体第一次出现时的位置,设置值如表格所示。
       Snap1.jpg
       StartUpPosition属性可以在程序中设置,也可以在窗体的属性窗口中设置。
       第4、5行代码,设置窗体的Left属性和Top属性,使其加载时显示在屏幕的右下角。
       经过设置后的窗体加载时显示位置如图所示。
Snap2.jpg

技巧142 调整窗体的显示位置.rar

8.66 KB, 下载次数: 808

TA的精华主题

TA的得分主题

 楼主| 发表于 2009-5-7 07:30 | 显示全部楼层
原帖由 ykx042907 于 2009-5-6 17:10 发表
袁版主:您好!
   请问一下:窗体显示在工作表中的初始位置,除了设置“StartUpPosition属性为0-手动、1-所有者中心、2-屏幕中心、3-窗口缺省”外。可不可以按照自己的意愿设置呀?如位于焦点的正下方!谢谢!

技巧143         由鼠标确定窗体显示位置
       窗体加载时其显示位置还可以由鼠标的坐标来确定,如下面的代码所示。
  1. #001  Private Sub CommandButton1_Click()
  2. #002      Dim ActiveCellX As Integer
  3. #003      Dim ActiveCellY As Integer
  4. #004      ActiveCellX = ExecuteExcel4Macro("GET.CELL(44)")
  5. #005      ActiveCellY = ExecuteExcel4Macro("GET.CELL(43)")
  6. #006      With UserForm1
  7. #007          .Show 0
  8. #008          .Top = ActiveCellY
  9. #009          .Left = ActiveCellX
  10. #010      End With
  11. #011  End Sub
复制代码
代码解析:
       使用ExecuteExcel4Macro方法执行Microsoft Excel 4.0 宏函数取得鼠标的坐标,ExecuteExcel4Macro方法的语法如下:
      expression.ExecuteExcel4Macro(String)
       expression参数是可选的,返回一个Application对象。
       String参数是必需的,一个不带等号的Microsoft Excel 4.0宏语言函数。
       第4行代码使用GET.CELL(44) 宏函数取得鼠标的X坐标,第5行代码使用GET.CELL(43) 宏函数取得鼠标的Y坐标。
       第6行到第10行代码显示窗体并设置其Top属性和Left属性,调整其显示的位置。
       还可以利用工作表SelectionChange事件的Target参数取得鼠标的坐标,如下面的代码所示。
#
  1. 001  Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  2. #002      With UserForm1
  3. #003          .Show 0
  4. #004          .Top = Target.Top
  5. #005          .Left = Target.Left
  6. #006      End With
  7. #007  End Sub
复制代码
代码解析:
       工作表的SelectionChange事件过程,Target参数代表新选定的区域,返回一个Range对象,在显示窗体时取得其Top和Left属性后设置窗体显示的Top和Left属性。

技巧143 由鼠标确定窗体显示位置.rar

10.32 KB, 下载次数: 902

点评

似乎无法精确定位  发表于 2014-1-22 16:56

评分

2

查看全部评分

TA的精华主题

TA的得分主题

发表于 2009-5-7 08:35 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2009-5-7 10:41 | 显示全部楼层

第8部分 控件与用户窗体

技巧144         用户窗体的打印
       在使用如图 144 1所示的窗体录入数据时,如果需要把窗体打印出来,可以使用PrintForm方法,如下面的代码所示。
Snap1.jpg
  1. #001  Private Sub CommandButton7_Click()
  2. #002      Dim myHeight As Integer
  3. #003      Application.ScreenUpdating = False
  4. #004      With UserForm1
  5. #005          myHeight = .Height
  6. #006          .DTPicker1.Visible = False
  7. #007          .Frame1.Visible = False
  8. #008          .Height = myHeight - 30
  9. #009          .PrintForm
  10. #010          .Height = myHeight
  11. #011          .DTPicker1.Visible = True
  12. #012          .Frame1.Visible = True
  13. #013      End With
  14. #014      Application.ScreenUpdating = True
  15. #015  End Sub
复制代码
代码解析:
       录入窗体中的“打印”按钮的单击代码,使用PrintForm方法打印窗体。
       第5行代码使用变量myHeight记录窗体的Height属性值,以便在第10行代码中恢复窗体原有的高度。
       第6、7行代码将窗体中的DTP日历控件和功能按钮的Visible属性设置为False,使之隐藏,这样在打印时就不会被打印出来。
       第9行代码使用PrintForm方法打印窗体,PrintForm方法将UserForm对象的图象逐位发送到打印机,语法如下:
       object.PrintForm
        参数object代表对象表达式,其值为“应用于”列表中的对象。如果省略该参数,则把焦点所在的窗体当做object。
第11、12行代码重新显示窗体中的DTP日历控件和功能按钮。
       窗体打印后的效果如图所示。
Snap2.jpg

技巧144 用户窗体的打印.rar

14.58 KB, 下载次数: 1207

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2009-5-7 10:47 | 显示全部楼层
原帖由 ayu330602 于 2009-5-6 23:04 发表

谢谢老师:
     我的第二个问题的意思是:当窗体弹出后,让第一列的宽度不能在窗体上变动,其它的列还是可以调整? 如果这样实现不了的话,全部不能调整应该可以的吧?
谢谢指导!
    另外请老师把改变光标中的手写字.cur文件贴上分享好吗?

好像没有办法使列的宽度不能调整,找不到相应的属性。

改变光标中的手写字,文件夹中有一个文件的。

TA的精华主题

TA的得分主题

 楼主| 发表于 2009-5-7 11:09 | 显示全部楼层

第8部分 控件与用户窗体

技巧145         使用自定义颜色设置窗体颜色
       在用VBA进行设计时,会发现控件与颜色相关的属性中系统提供可选择的颜色太少。比如窗体的BackColor属性,如果需要把窗体的背景颜色设置为淡蓝色RGB(52,150,203),可以在窗体初始化过程中对之进行设置,可以实现想要的效果,但是在设计时却不能看到最终效果。
       其实窗体的BackColor属性(包括ForeColor以及BorderColor等等这些设置颜色的属性)允许输入一个以十六进制表示的长整型数值,这样在设计时就看到效果。
       首先获取所需要的颜色值并以十六进制表示。还以上面的颜色为例,在立即窗口输入“? Hex(RGB(52,150,203))”可得到一个十六进制数据CB9634,然后把光标定位在窗体属性窗口的BackColor属性值中,删除原来的数值后,输入“&HCB9634&”后按<Enter>键,窗体颜色效果立即就出现了,如图所示。
Snap1.jpg

技巧145 使用自定义颜色设置窗体颜色.rar

4.9 KB, 下载次数: 827

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

本版积分规则

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

GMT+8, 2024-4-29 01:21 , Processed in 0.061060 second(s), 8 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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