ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

EH搜索     
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
Excel不给力? 何不试试FoxTable! Excel 2016函数公式学习大典 Office知识技巧免费学 打造核心竞争力的职场宝典
300集Office 2010微视频教程 Tableau-数据可视化工具 精品推荐-800套精选PPT模板,点击获取 ExcelHome出品 - VBA代码宝免费下载
你的Excel 2010实战技巧学习锦囊 欲罢不能, 过目难忘的 Office 新界面 Excel VBA经典代码实践指南
查看: 22837|回复: 56

[原创]天天控件学习帖(1)(请勿灌水)

[复制链接]

TA的精华主题

TA的得分主题

发表于 2006-4-23 23:12 | 显示全部楼层 |阅读模式
在学习中发现控件的使用真的很美妙,所以决定对控件进行一下系统仔细的学习,我将每天的学习体会与心得与大家交流及探讨. 先传个小玩艺,让大家感受下它的魅力 控件突显及隐现 SNzJ7fio.rar (12.09 KB, 下载次数: 2809)

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-4-23 23:59 | 显示全部楼层
第一讲 控件入门 第一节 控件初接触 看了昨天的小程序我相信大家对窗体里的控件都有一个大概的了解了吧。下面我们就来介绍一下它。 1、首先在EXCEL的VBE中插入一个用户窗体。(如下图) 这就是空白窗体,可以在上面放置各种控件) 窗体也是一个控件,它可以作为容器,同样Picturebox控件、Frame控件等控件也可以作为其它控件的容器。 小提示:有的控件只能在设计时可见,在运行中不可见,如DiaolgBox控件。 既然它也是一个控件,那么它肯定具有属性,方法,事件。选中窗体,再点击常用工具栏的“属性窗口”命令,这时你会发现有一个属性窗口显示。(如下图) 这里显示的就是窗体控件(Userform1)的属性列表。随着以后我们的控件的增加,所有的控件都会出现在 列表里,可以通过下拉单选择控件,快速查看该控件的属性。它有两个查看选项,一个是按字母序(升序排列),别一个是按分类序(按用途分类,用途首字母升序排列)。 那么属性是什么?属性窗口有什么用呢? 属性:就是该对象的外在特点。打个比方吧,如一个苹果,它是红的,大的,甜的。等等,刚才举的这些就是它的属性。 那么属性窗口我们可以通过它来快速查看和修改某对象的属性,正如不是所有的苹果都是红的,也有黄的,绿的,等等。 属性窗口中列出来的所有属性都可以在通过这个窗口进行修改(但不能在运行时),有的属性只能在设计时修改,如:name属性,有的只能在运行中使用,如:currentX,currentY等。有的只能在运行中创建和修改,如TreeView控件中的node对象及属性。 有些属性既是属性又是对象,如Font属性。
[此贴子已经被作者于2006-4-26 20:54:01编辑过]
nOwAST0G.bmp
TOzo8Ly5.bmp
ZBTelL8u.bmp

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-4-26 20:56 | 显示全部楼层

第二节 UserForm对象

2.1 属性

下面我们就窗体对象的属性做一个介绍。(以字母序)

一、Name 属性(名称)

功能:返回在代码中用于标识窗体、控件或数据访问对象的名字。在运行中为只读。

语法object.Name [= String]

小提示,当Name属性应用于Font对象时,它指定Font对象的相关字体的名称。(可读写)

Name 属性的语法包括下列成分:

成分 说明

object 必需。一个有效对象。

String 可选。要给字体或控件指定的名称。

设置

EXCEL中的说明为给 Name 指定字符串的准则(例如名字的最大长度)随应用程序的不同而不同。

VB6中的说明为对象的Name属性必须比字母开头,不能超过40个字符。可以包含下划线及数字,不能包含标点符号或空格。(这里与变量的命名方式差不多)。在VB中可以通过设置Name属性来创建控件数组,但是EXCEL不行,所以不做介绍。

说明

对于对象,Name 的默认值由对象的类名后跟一个整数组成。例如,放置在窗体上的第一个文本框的默认名是 TextBox1,第二个文本框的默认名是 TextBox2

在设计时间添加到窗体中的每个控件都必须有唯一的名称。不能与其它的公共对象有相同的名字。Name属性最好不要用关键字,属性名字或其它对象的名字。

Name属性在缺省的情况下与CaptionTextLinktopic属性的缺省值相同,但它们无必然联系。

补充

Name属性作为一个对象的标识,它的名字我觉得非常关键,为什么这么说呢?

我们试想一下,如果一个窗体上有几个命令按钮,都是使用缺省的Name属性,Commandbutton1Commandbutton2…3….等,各自的功能不同,在编程时,虽然可以使用注释时,标记,但并不明了,在属性列表中快速选中对象时,在对代码的维护时,都存在不小的麻烦。也许说不定这个维护者有可能还是自己,对于一个在几个月前写的东西,我想并不是每一个还能记得自己当时的想法及各个控件的功用。所以给对象的Name属性安一个有意义的名字是非常有必要的。如退出的命令按钮的Name属性可以使用CmdExit。我们就很容易通过它的Name属性名来了解它的功用及它的代码块。

关于命名,我说几句,我在论坛上发现不少作品中有使用中文字来作为过程名或对象名,这样虽然更直观,但是并不少所有的版本都支持它,作为一名有良好习惯的编程人员,应该使用英文。有必要的可以使用注释等来进行标注。

同时我建议大家使用编码标准约定。

[此贴子已经被作者于2006-4-26 21:01:51编辑过]

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-4-26 21:03 | 显示全部楼层
二、ActiveControl 属性 标识并允许操作具有焦点的控件。 语法 object.ActiveControl object 必需。一个有效对象。 说明 ActiveControl 属性是只读的,当界面上的控件被选中时,该属性即被设置。在设置属性或调用方法时,可以用 ActiveControl 来替代控件名。因为也可以认为它同时还是一个对象,它具有的属性有 同时它还具有方法 示例:下面示例在一个子程序中使用 ActiveControl 属性,该子程序跟踪用户访问的控件。在窗体中放置一个文本控件(Textbox),两个命令按钮(Commandbutton)。 控件\对象 Name属性 UserForm1 frmShowObjName Textbox1 txtShowName Commandbutton1 cmdShowName1 Commandbutton2 cmdShowName2 程序清单 Option Explicit '===============================================' '| 创建人:胡炜 创建时间:2006-4-26 14:32 |' '| 功用:演示ActiveControl属性 |' '| 说明:ShowobjName是模块级代码块,方便其它的 |' '| 事件或代码块调用. |' '===============================================' Private Sub cmdShowName1_Enter() Call ShowObjName End Sub Private Sub cmdShowName2_Enter() Call ShowObjName End Sub Private Sub txtShowName_Enter() Call ShowObjName End Sub Private Sub ShowObjName() frmShowobjName.Caption = frmShowobjName.ActiveControl.Name End Sub 说明:Enter 事件与 Visual Basic 中的 GotFocus 事件类似。 dfBCQfQx.rar (8.81 KB, 下载次数: 827)

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-4-26 21:04 | 显示全部楼层
三、BackColor属性 返回或设置对象的背景色。(可读写) 语法 object.BackColor [= Color] BackColor 属性的语法有以下几个成分: 成分 说明 object 必需。一个有效对象。 Color 可选。值或常量,指定对象的背景色。 VB在运行使用Microsoft windows 的红、绿、蓝(RGB)颜色方案。其设置值如下: 设置值说明 标准RGB颜色使用调色板或在代码中使用RGB函数指定的颜色 系统缺省颜色使用由对象浏览器中的VB对象库所列的系统颜色 常数 指定的颜色,使用用户在控制面板中选择的颜色。 在设计时,BackColor设置为由常数vbWindowBackground定义的系统缺省颜色。 说明 只有在 BackStyle 属性设为 fmBackStyleOpaque 时,才可看到对象的背景色。 可采用任意整数来表示某一种有效的颜色,也可采用由红、绿、蓝三种成分构成的 RGB 函数来指定某种颜色,每一种色素的值是 0 至 255 之间的任意整数,如果超过255,则作为255处理。例如:值为 4966415 的整数或红、绿、蓝色素值为 15、200、75 的 RGB 函数,均代表青色。 下表列出常见的标准颜色,以及这些颜色的红、绿、蓝原色的成份: 颜色红色值绿色值蓝色值 黑色000 蓝色00255 绿色02550 青色0255255 红色25500 洋红色2550255 黄色2552550 白色255255255 示例:下面程序中点击窗体即换背景色。 对象 Name属性 UserForm1 frmBCol 程序清单 Option Explicit '====================================================' '| 创建人:胡炜 创建时间:2006-4-26 14:32 |' '| 功用:演示BackColor属性 |' '| 效果:点击窗体即改变窗体的背景色 |' '| 说明:Randomize是初始化随机数生成器 |' '| RGB函数 |' '| 返回一个 Long整数,用来表示一个 RGB 颜色值 |' '| 语法 RGB(red, green, blue) |' '| red,green,blue 必要参数 |' '| Variant(integer) 数值范围从0~255. |' '====================================================' Private Sub UserForm_Click() Dim intRed As Integer Dim intGreen As Integer Dim intBlue As Integer Randomize '初始Rnd函数的种子值 intRed = Int(Rnd * 256) intGreen = Int(Rnd * 256) intBlue = Int(Rnd * 256) frmBCol.BackColor = RGB(intRed, intGreen, intBlue) End Sub xuhs5XzG.rar (8.73 KB, 下载次数: 115)

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-4-26 21:05 | 显示全部楼层
四、BorderStyle属性 指定控件或窗体的边框类型。 语法 object.BorderStyle [= fmBorderStyle] BorderStyle 属性的语法包含以下几个成分: 成分 说明 object 必需。一个有效对象。 fmBorderStyle 可选。指定边框类型。 fmBorderStyle 的设置值如下: 常量 值 说明 fmBorderStyleNone 0 控件无可见的边框线。 fmBorderStyleSingle 1 控件有一单线的边框(默认值)。 说明 只可选用 BorderStyle 或 SpecialEffect 属性中的一种来指定某一控件的边框,而不能同时采用这两种属性。当其中一种属性被设为一非零的值时,则另一属性自动被设为零。例如:若将 BorderStyle 设为 fmBorderStyleSingle,则系统将 SpecialEffect 设为 0 (Flat);如果将 SpecialEffect 设为一非零的值,则系统将 BorderStyle 设为 0。 BorderStyle 用 BorderColor 来定义其边框的颜色。 五、BorderColor属性 指定对象的边框颜色。 语法 object.BorderColor [= color] BorderColor 属性的语法有以下几个成分: 成分 说明 object 必需。一个有效对象。 color 可选。值或常量,指定对象的边框颜色。 可采用任意整数来代表某一种有效的颜色,也可采用由红、绿、蓝三种成分构成的 RGB 函数来指定一种颜色,每一种色素的数值为 0 至 255 之间的任意整数。(同BackColor的Color的设置规则) 说明 若要使用 BorderColor 属性,则必须将 BorderStyle 属性设置为除 fmBorderStyleNone 以外的数值。 BorderStyle 使用 BorderColor 来设定边框颜色。 六、CanPaste 属性 指定在剪贴板中是否包含对象支持的数据。(只读) 语法 object.CanPaste object 必需。一个有效对象。 CanPaste 属性的返回值为: 值 说明 True 鼠标指针下的当前对象可接受从剪贴板中粘贴的信息(默认值)。 False 鼠标指针下的当前对象不能接受从剪贴板中粘贴的信息。 说明 如果剪贴板中的数据采用的是当前目标对象所不支持的格式,则 CanPaste 属性为 False。例如,如果试图将位图粘贴到某个只支持文本的对象中,则 CanPaste 将为 False。

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-4-26 21:08 | 显示全部楼层
七、CanRedo 属性 表示最近的撤消操作可否反向执行。(只读) 语法 object.CanRedo object 必需。一个有效对象。 CanRedo 属性的返回值: 值 说明 True 最近的撤消操作可反向执行。 False 最近的撤消操作不可反向执行。 说明 执行一次“重复”操作即意味着反向执行一次“撤消”操作,但这不一定代表重复执行用户的上一次操作。 下面的用户操作可以解释“撤消”和“重复”操作: 更改一个选项按钮的设置;在一文本框内输入文本; 单击“撤消”按钮,则文本框中的文本内容消失; 单击“撤消”按钮,则选项按钮的设置恢复为原先的设置; 单击“重复”按钮,则选项按钮的设置值更改; 单击“重复”按钮,则重新显示文本框中的文本内容。 八、CanUndo 属性 表示用户的上一次操作是否可撤消。(只读) 语法 object.CanUndo object 必需。一个有效对象。 CanUndo 属性的返回值为: 值 说明 True 用户的最近一次操作可以撤消。 False 用户的最近一次操作不可以撤消。 说明 用户的许多操作均可通过“撤消”命令撤消。而 CanUndo 属性则表示最近一次操作是否可以撤消。 小提示:其实仔细观察CanUndo、CanRedo属性与Excel上的撤消\重复键类似。它们分别 对应UndoAction、RedoAction方法。 示例:下面程序中使用CanRedo、CanUndo属性及对应方法撤消或重复对文本框的操作。使用了一个文本控件(textbox)和两个命令按钮。 控件\对象 Name属性 UserForm1 frmChangeText Textbox1 txtChange Commandbutton1 cmdUndo Commandbutton2 cmdRedo 程序代码: '===========================================' '| 创建人:胡炜 创建时间:2006-4-26 17:32 |' '| 功用:演示Redo\Undo属性 |' '| 效果:撤消或重复对文本框内的操作 |' '| 说明:RedoAction方法分别对应CanRedo属性 |' '| UndoAction方法分别对应CanUndo属性 |' '| 使用这两个属性及对应方法的效果类似于 |' '| "编辑"菜单项下的"撤消"和"重复"功能 |' '| 无法做到真正意义上的,首先功能按键的可用与 |' '| 不可用这个效果就没有做到.目前我没有方法 |' '=============================================' Private Sub cmdRedo_Click() If frmChangeText.CanRedo Then frmChangeText.RedoAction Else MsgBox "不能进行重复操作", vbOKOnly + vbCritical, "操作错误" End If End Sub Private Sub cmdUndo_Click() If frmChangeText.CanUndo Then frmChangeText.UndoAction Else MsgBox "不能进行撤消操作", vbOKOnly + vbCritical, "操作错误" End If End Sub Ak2APWTl.rar (7.57 KB, 下载次数: 499)

TA的精华主题

TA的得分主题

发表于 2006-4-27 12:18 | 显示全部楼层

讲得很好,谢谢!流星兄辛苦了。

看来流星兄是准备把所有的控件使用都写一下了,占个位置先。 另外,属性的概念比喻得很好,补充一下事件和方法的概念: 事件-----“当苹果被人吃的时候”就是一个事件,即对象发生某种事情;事件在VBE代码窗口的右上角可以选择。 方法-----“拿起苹果”是一种方法,即对对象执行一个动作;当写了某个对象后加个点“.”就会出现一个选择框,里面的选择是属性和方法,前面用不同的图标表示。 要注意的是:对象名用全称加“.”才会出现选择框,简写对象名不会出现。比如单元格对象用“ [A1] ”表示,加“.”后不会出现选择框,而用“ Range("A1") ”加个点就才会出现一个选择框。
[此贴子已经被作者于2006-4-27 12:55:47编辑过]

TA的精华主题

TA的得分主题

发表于 2006-4-27 19:51 | 显示全部楼层
从窗体或控件工具箱内插入的控件与上面所用方法插入的有何区别呢?
控件工具箱添加的与在VBE添加的使用一样,只是依托的载体不同。而窗体里的控件不具备属性和方法,事件等。控件工具箱是ActiveX控件,而窗体里的依我个人看来只是一个纯载体____ by yigepure
[此贴子已经被yigepure于2006-4-28 12:54:28编辑过]

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-5-3 02:30 | 显示全部楼层
九、Controls集合 Controls 集合汇集了某个对象所包含的全部控件。 说明: 对象的 Controls 集合中的每个控件都具有唯一的索引,索引值可以是整数或字符串。集合中的第一个控件的索引值是 0;第二个控件的索引是 1;依此类推。该索引表示了控件加入集合的顺序。 如果索引为字符串,则它代表控件的名称。控件的 Name 属性也表示该控件的名称。 可用 Controls 集合对控件进行枚举或计数,并设置它们的属性。例如,可以对某个窗体的 Controls 集合进行枚举,并将每个控件的 Height 属性都设置为指定值。 注意 在对集合进行枚举时可以使用 For Each...Next 语句。 它具有Count 属性,Add 方法,Clear方法,ReMove方法,Item方法,Move方法。 用一个简单的例子来说吧。 在窗体上添加一个框架控件和四个命令按钮。属性设置如下: 控件\对象 Name属性 Frame1 frmAddBox Commandbutton1 cmdAddObject Commandbutton2 cmdClearObject Commandbutton3 cmdRemoveObject Commandbutton4 cmdMoveObject 代码如下: Private Sub cmdAddObject_Click() Dim DymanicTextBox As Control Set DymanicTextBox = fraAddBox.Controls.Add("Forms.TextBox.1", "MyTextbox", True) Set DymanicTextBox = Nothing End Sub Private Sub cmdClearObject_Click() fraAddBox.Controls.Clear End Sub Private Sub CmdRemoveObject_Click() If fraAddBox.Controls.Count > 0 Then fraAddBox.Controls.Remove "MyTextBox" End Sub Private Sub cmdMoveObject_Click() If fraAddBox.Controls.Count > 0 Then m_TxtBoxTop = (m_TxtBoxTop + 5) Mod 100 fraAddBox.Controls("MyTextBox").Move 0, m_TxtBoxTop End If End Sub
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关注官方微信,每天学会一个新技能

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

GMT+8, 2020-6-1 08:01 , Processed in 0.089466 second(s), 18 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2020 Wooffice Inc.

   

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

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

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