VBA窗体在运行的时候动态添加控件的代码
excel vba窗体各个控件的使用说明及示例
在进行Excel VBA编程时,控件是非常重要的一部分,它们可以帮助我们实现用户界面的交互和功能实现。
本文将深度探讨Excel VBA窗体各个控件的使用说明及示例,帮助读者更好地理解和应用这些控件。
# 1. 按钮控件的使用说明及示例在Excel VBA窗体中,按钮控件是非常常见的,它可以帮助我们实现各种功能的触发和执行。
在使用按钮控件时,我们需要考虑以下几点:- 按钮的命名和标识符- 按钮的触发事件- 按钮的样式和外观下面是一个简单的按钮控件的示例代码:```vbaPrivate Sub CommandButton1_Click()Range("A1").Value = "Hello, Excel VBA!"End Sub```在这个示例中,当用户点击按钮时,单元格A1的数值将会被改变为"Hello, Excel VBA!"。
# 2. 文本框控件的使用说明及示例文本框控件在Excel VBA窗体中也是非常常见的,它可以帮助我们接收用户的输入并进行相应的处理。
在使用文本框控件时,我们需要考虑以下几点:- 文本框的命名和标识符- 文本框的输入限制和格式验证- 文本框的默认数值和提示信息下面是一个简单的文本框控件的示例代码:```vbaPrivate Sub TextBox1_Change()If IsNumeric(TextBox1.Value) ThenRange("A1").Value = TextBox1.ValueEnd IfEnd Sub```在这个示例中,当用户输入内容改变时,如果输入的是数值,那么它将会被写入到单元格A1中。
# 3. 列表框控件的使用说明及示例列表框控件可以帮助我们展示一组选项,并允许用户从中选择一个或多个选项。
在使用列表框控件时,我们需要考虑以下几点:- 列表框的命名和标识符- 列表框的选项内容和数据绑定- 列表框的选项选择和交互下面是一个简单的列表框控件的示例代码:```vbaPrivate Sub ListBox1_Click()Dim i As IntegerFor i = 0 To ListBox1.ListCount - 1If ListBox1.Selected(i) ThenRange("A1").Value = ListBox1.List(i)End IfNext iEnd Sub```在这个示例中,当用户选择列表框中的某一项时,该项的数值将会被写入到单元格A1中。
vb动态添加删除控件汇总
VB 动态添加删除控件汇总1. 概述在使用Visual Basic 进行程序设计的过程中,如果能在运行时刻动态地创建和删除控件,可以极大地丰富界面的处理和变化。
本人在设计网络监控系统时,需要在原理图与实物示意图间切换。
切换的过程采用本文介绍控件的动态创建和删除来实现,有效地节省了系统资源,同时也有利于简化界面的维护。
下面将就Visual Basic 6.0 中的控件在运行时刻的创建和删除的两种方法——控件数组和控件集合作详细的阐述。
2. 基于控件数组的动态控件的创建与删除vb 中的控件数组实际上也是一种数组,其中的每个控件具有相同的Name 属性,但具有不同的Index 属性,在这里Name 属性类似于数组的名字,而Index 属性类似于数组的下标同时,控件数组也支持普通VBA 数组的LBound 、UBound 和Count 方法,控件数组中的控件可以共享一个事件过程,便于代码的编写和集中处理,这正是使用控件数组的最大的理由。
但是控件数组与普通的数组并非完全一样,它不需要定义大小,只有这样我们才可以动态的扩展[kuo zhan]它。
下面给出利用Load 命令动态添加控件和Unload 命令动态删除控件的一般方法:(1)首先在窗体上放置一个TextBox ,其Name 属性设置为Text1 ,Index 属性设置为0 ,这样我们就创建了一个TextBox 控件数组,其中有一个成员。
(2)在窗体上放置一个命令按钮Command1 ,在其Click 事件中添加如下的代码:LoadText1(1)Text1(1).left=0Text1(1).visible=true(3)在窗体上放置一个命令按钮Command2 ,在其Click 事件中添加如下的代码:Unload Text1(1)(4)运行。
单击命令按钮Command1 ,窗体上会出现一个新的文本框;单击命令按钮Command2 ,窗体上刚出现的新的文本框就被删除。
VB中动态创建控件
VB中动态创建控件VB中动态创建控件创建数据驱动窗体所谓数据驱动窗体就是根据所请求的数据的不同生成相应的窗体。
举例来讲,假设你现在有一个数据库,其中有些字段必须根据登录者的身份加以显示,授权级别高的用户可以浏览并修改这些字段的内容;授权级别一般的用户只能浏览这些字段中的数据;授权级别低的用户则不能浏览这些字段中的内容。
要做到这一点就得利用VB动态添加控件的功能。
动态创建控件无论你想要创建何种类型的数据驱动窗体,你必须知道如何在运行时动态地创建控件。
你可以通过控件数组做到这一点,但VB6的Controls集合所提供的Add方法,功能更强大,灵活性更高。
使用该方法,你不需要在设计时将控件的实例放在窗体上。
实际上,用Add 方法你甚至可以创建程序在编译时根本不存在的控件。
这种方法的用法也很简单:‘ 声明一个窗体级的变量Dim WithEvents txtTotal As TextBoxSub CreateTextbox()‘ 创建新的Textbox控件Set txtTotal = Controls.Add("VB.TextBox", "txtTotal")‘ 将控件移动到你所需要的地方txtTotal.Move 1000, 800, 1200, 300‘ 创建时,所有的控件都是不可见的txtTotal.Visible = TrueEnd Sub请注意Add方法的第二个参数:分配给控件的名称。
从代码可读性出发,这个名称一般都与变量名相同。
你可以用这个名称从Controls集合中获取相应的控件或移除该控件。
例如:Controls.Remove "txtTotal"在变量声明时加上WithEvents关键字,即使在设计时窗体不存在该控件,你也可以为该控件的事件编写代码。
上面所讲的方法只适合解决VB内置的控件。
例如,当你要添加一个TreeView控件时,VB会要求你证明你已经得到了合法的授权来创建该控件的实例。
VBA的控件及用户窗体
目录VBA常用技巧 ....................................................................................................错误!未定义书签。
第8章控件与用户窗体 (4)技巧1限制文本框的输入 (4)技巧2文本框添加右键快捷菜单 (6)技巧3文本框回车自动输入 (10)技巧4自动选择文本框内容 (11)技巧5设置文本框数据格式 (12)技巧6限制文本框的输入长度 (14)技巧7将光标返回文本框中 (15)技巧8文本框的自动换行 (17)技巧9多个文本框数据相加 (19)技巧10控件跟随活动单元格 (20)技巧11高亮显示按钮 (21)技巧12组合框和列表框添加列表项的方法 (23)12-1使用RowSource属性添加列表项 (23)12-2使用List属性添加列表项 (24)12-3使用AddItem方法添加列表项 (25)技巧13去除列表框数据源的重复值和空格 (27)技巧14移动列表框条目 (29)技巧15允许多项选择的列表框 (32)技巧16多列组合框和列表框的设置 (35)16-1多列组合框和列表框添加列表项 (35)16-2多列列表框写入工作表 (37)技巧17输入时逐步提示信息 (39)技巧18二级组合框 (46)技巧19使用DTP控件输入日期 (48)技巧20使用RefEdit控件选择区域 (51)技巧21如何注册控件 (52)技巧22遍历控件的方法 (55)22-1使用名称中的变量遍历控件 (55)22-2使用对象类型遍历控件 (57)22-3使用程序标识符遍历控件 (58)22-4使用名称中的变量遍历图形 (59)22-5使用FormControlType属性遍历图形 (60)技巧23使微调框最小变动量小于1 (61)技巧24不打印工作表中的控件 (63)24-1设置控件格式 (63)24-2设置控件的printobjcet属性 (65)技巧25在框架中使用滚动条 (65)技巧26使用多页控件 (67)技巧27标签文字垂直居中对齐 (69)技巧28使用TabStrip控件 (71)技巧29显示GIF动画图片 (73)技巧30播放Flash文件 (76)技巧31在工作表中添加窗体控件 (78)31-1使用AddFormControl方法 (79)31-2使用Add方法 (81)技巧32在工作表中添加ActiveX控件 (83)32-1使用Add方法 (84)32-2使用AddOLEObject方法 (86)技巧33使用spreadsheet控件 (87)技巧34使用Listview控件 (90)34-1使用Listview控件显示数据列表 (90)34-2在Listview控件中使用复选框 (93)34-3调整Listview控件的行距 (95)34-4在Listview控件中排序 (98)34-5Listview控件的图标设置 (99)技巧35调用非模式窗体 (102)技巧36进度条的制作 (104)36-1使用进度条控件 (104)36-2使用标签控件 (106)技巧37使用TreeView控件显示层次 (109)技巧38用户窗体添加图标 (113)技巧39用户窗体添加最大最小化按纽 (115)技巧40禁用窗体标题栏的关闭按钮 (116)技巧41屏蔽窗体标题栏的关闭按钮 (117)技巧42无标题栏和边框的窗体 (119)技巧43制作年月选择窗体 (120)技巧44自定义窗体中的鼠标指针类型 (123)技巧45调整窗体的显示位置 (124)技巧46由鼠标确定窗体显示位置 (126)技巧47用户窗体的打印 (127)技巧48使用自定义颜色设置窗体颜色 (129)技巧49在窗体中显示图表 (130)49-1使用Export方法 (130)49-2使用API函数 (132)技巧50窗体运行时调整控件大小 (133)技巧51在用户窗体上添加菜单 (136)技巧52在用户窗体上添加工具栏 (140)技巧53使用代码添加窗体及控件 (145)技巧54用户窗体的全屏显示 (151)54-1设置用户窗体为应用程序的大小 (151)54-2根据屏幕分辨率进行设置 (152)技巧55在用户窗体上添加状态栏 (153)第8章控件与用户窗体技巧1 限制文本框的输入用户在使用文本框输入数据时,往往希望能限制输入数据的类型,比方只能输入数字。
在 VB 中动态添加和删除控件
Wi t h e x t C t l ‘ 为控T u e’ r He i g h t=2 0 0 0
.
.
、 矾d t h=2 0 0 0
. .
Ca p t i o n-I ’ 动态按钮 ”
Wi d nl =2 0 0 0 To p= 1 0 0 0 L e f t =1 0 0 0
置其属性 ,也就是说控件在设计 时已经存在 , 在程序运行过程 中只 能改变其属性 。那么 能不 能在程序运行过程 中添加 或删 除未 引用 的控件 呢? 回答是肯定 的,在程序 运行 过程 中即可以 添加所需要 的控件 , 当用完时就可删除该控件 ,
En dW i t h
.
E n d Su b
F o r m1 . C o n t r o l s . R e mo v e ” b t n O b j 该控件 的名 称为 b t n Ob j
E n d S u b
下:
总 之 ,通 过 Ad d方 法 和 R e mo v e方 法 可
以动 态 的添加 和删 除控件 ,使在 编程 时对 控
用是在创建程序界面时添加 ,然后根据需要设
性
Wi t h F o r ml ! c m d O b j 1 ‘ 为控 件设 置属
Vi s i b l e= T r u e
Ad d ( ” ms d a ag t r i d l i b . d ta a g r i d ” , _” d a ag t r i d 1 ” )
_
个控件并返 回一个对该控件 的引用 。语法如
o b j e c t . Ad d( P r o g l D, n a me , c o n t a i n e r ) 0b j e c t必 需的。一 个对象表达 式 P r o g I D 必 需 的。 一 个标 识 控 件 的 字 符
VB怎样动态加载ActiveX控件
VB怎样动态加载ActiveX控件熟悉VB的朋友对使用ActiveX控件一定不会陌生,众多控件极大地方便了编程,但唯一的缺陷是不能动态加载控件,必须在设计时通过引用,将控件放置在窗体上。
VB6.0已能够解决该问题,只是帮助中没有明确说明,并且没有描述到一些关键功能,由于以前的版本中可以动态创建进程外服务:如果对象是外部可创建的,可在Set 语句中用New 关键字、CreateObject 或GetObject 从部件外面将对象引用赋予变量。
如果对象是从属对象,则需使用高层对象的方法,在Set 语句中指定一个对象引用:Dim xlApp1 As Excel.ApplicationSet xlApp1 = New Excel.Application或Dim xlApp As Object '定义存放引用对象的变量。
Set xlApp = CreateObject("excel.application")xlApp.Visible = True这些语法很容易造成误导,以为动态加载ActiveX控件也是此方法,可能有朋友也象我一样利用CreateObject尝试了无数次,却无功而返,不知微软公司是出于何种考虑,动态加载ActiveX控件是扩展控件集合的方式实现,通过实际摸索,终于就如何实现动态ActiveX控件找出了一条切实可行的方法,下面以一个具体的实例来详细说明。
一、ActiveX控件ActiveX 控件是Visual Basic 工具箱的扩充部分。
使用ActiveX 控件的方法与使用其它标准内装的控件,如CheckBox 控件,完全一样。
在程序中加入ActiveX 控件后,它将成为开发和运行环境的一部分,并为应用程序提供新的功能。
ActiveX 部件通过客户端/服务器关系与应用程序—及与部件相互之间—交互作用。
客户端是使用部件功能的应用程序代码或部件。
服务器是部件及其关联的对象。
vb动态添加删除控件汇总
VB 动态添加删除控件汇总1. 概述在使用Visual Basic 进行程序设计的过程中,如果能在运行时刻动态地创建和删除控件,可以极大地丰富界面的处理和变化。
本人在设计网络监控系统时,需要在原理图与实物示意图间切换。
切换的过程采用本文介绍控件的动态创建和删除来实现,有效地节省了系统资源,同时也有利于简化界面的维护。
下面将就Visual Basic 6.0 中的控件在运行时刻的创建和删除的两种方法——控件数组和控件集合作详细的阐述。
2. 基于控件数组的动态控件的创建与删除vb 中的控件数组实际上也是一种数组,其中的每个控件具有相同的Name 属性,但具有不同的Index 属性,在这里Name 属性类似于数组的名字,而Index 属性类似于数组的下标同时,控件数组也支持普通VBA 数组的LBound 、UBound 和Count 方法,控件数组中的控件可以共享一个事件过程,便于代码的编写和集中处理,这正是使用控件数组的最大的理由。
但是控件数组与普通的数组并非完全一样,它不需要定义大小,只有这样我们才可以动态的扩展[kuo zhan]它。
下面给出利用Load 命令动态添加控件和Unload 命令动态删除控件的一般方法:(1)首先在窗体上放置一个TextBox ,其Name 属性设置为Text1 ,Index 属性设置为0 ,这样我们就创建了一个TextBox 控件数组,其中有一个成员。
(2)在窗体上放置一个命令按钮Command1 ,在其Click 事件中添加如下的代码:LoadText1(1)Text1(1).left=0Text1(1).visible=true(3)在窗体上放置一个命令按钮Command2 ,在其Click 事件中添加如下的代码:Unload Text1(1)(4)运行。
单击命令按钮Command1 ,窗体上会出现一个新的文本框;单击命令按钮Command2 ,窗体上刚出现的新的文本框就被删除。
vb中如何动态添加删除控件
vb中如何动态添加删除控件用Controls.Remove(控件) 动态删除控件。
注意:在VB中只能动态删除那些动态添加的控件;不允许删除在窗体设计器上布置的控件!示例如下:(1)创建一个VB工程(2)在Form1上布置两个Command(3)窗体代码Option Explicit' 声明要被动态添加/删除的控件Dim x As Label'-----------------------------' 动态添加一个Label控件'-----------------------------Private Sub Command1_Click()If x Is Nothing ThenSet x = Controls.Add("bel", "label1")x.Move 150, 150x.AutoSize = Truex.Caption = "这个是动态添加的标签" x.Visible = TrueEnd IfEnd Sub'-----------------' 动态删除控件'-----------------Private Sub Command2_Click()If x Is Nothing Then Exit Sub Controls.Remove xSet x = NothingEnd SubPrivate Sub Form_Load() Command1.Caption = "添加控件" Command2.Caption = "删除控件" End Sub(4)运行窗体启动点击“添加控件”按钮点击“删除控件”按钮。
VBA窗体之进度条VBA实例教程
VBA窗体之进度条VBA实例教程在程序需要运⾏较长时间时加上⼀个进度条可能会显得更加⾼⼤上⼀些,这节我们来看下怎样制作进度条,这⾥介绍两种⽅法,⼀种是⽤标签控件结合⽂本框来实现进度条效果,⼀种是直接利⽤VBA的进度条控件。
下⾯来看第⼀种⽅法,其思路是以⼀个⽂本框做为⽩⾊背景,以⼀个标签控件覆盖于⽂本框之上,随着程序的运⾏不断调整标签控件的宽度来覆盖⽂本框就有了进度条的效果。
在这⾥我⼜在⽂本框的中间加了⼀个标签来以数字形式显⽰进度。
Private Sub CommandButton1_Click()Dim i, w, k, nw = TextBox1.Width '⽂本框的宽度n = 10000 '运⾏的步数For i = 1 To nk = k + w / n '标签的宽度Label1.Width = kLabel2.Caption = Format(i / n, "0.00%")DoEvents '有这句才会实时显⽰标签变化NextMsgBox "完成"End Sub上⾯就是⼀个简单的数学问题,总进程长度是⽂本框的长度w,总步数为n,则每运⾏⼀步标签控件长度需增加w/n。
需要提前在属性窗⼝设置好Lable1的颜⾊,⽂本框的Enable属性要设成False,否则运⾏之前⽂本框会有个光标在闪,Lable2的BackStyle要选0,即透明,否则就把⽂本框遮住了。
上⾯是第⼀种⽅法第⼆种⽅法是直接利⽤VBA的进度条控件。
初始的话⼯具窗中⼀般不显⽰,需要在附加控件中勾选“Microsoft ProgressBar Control”。
Private Sub CommandButton1_Click()Dim i, nn = 10000ProgressBar1.Max = nProgressBar1.Min = 0For i = 0 To nProgressBar1.Value = iNextMsgBox "完成"End Sub这个⽤起来就简单了,分别设置进度条的最⼤值为总步数、最⼩值为0,运⾏到哪⼀步就直接使Value等于该值即可,没啥好说的了。
VB6.0动态增删控件
Vb6.0动态增删控件的实现经常在网上和杂志上看到问vb怎样动态增加控件,笔者在编一程序时,曾经用到,下面作一个较为详细的描述,希望能给大家有所帮助。
最简单的方法:控件数组。
在VB编程中有一个控件数组的概念, 通过置控件的INDEX 索引值的控制, 不仅可以建立一组具有紧密联系的相同控件, 而且可以实现在程序运行状态中增加控件数目功能, 这在实际编程中应用的非常广泛;在编程中实现具体增加控件数组如下代码即可,请先在窗体上添加一个option控件,名称为option1,并将index属性设为0.Private Sub Form_ load()Dim i As IntegerFor i = 1 To 5Load Option1(i) ' 给数组添加 5 个选项按钮。
Option1(i).Top = Option1(i - 1).Top + 350’设置顶端位置Option1(i).left= Option1(i - 1).left+800Option1(i).Visible = True’显示增加的控件Option1(i).caption = iNext iEnd SubPrivate Sub Option1_Click(Index As Integer)MsgBox ("您点击了index为" & Index & "的option控件.")End Sub(二)通过Add方法实现Add方法在Controls集合中添加一个控件并返回一个对控件的引用。
Add 方法的语法为:Object.Add(ProgID,Name,Container)其中Object为要添加元素的集合,ProgID为标示的字符串.可通过对象浏览器来确定,例如,CommandButton控件的ProgID是mandButton. Name是控件的名称. Container是包含添加控件的容器,可以为form或Frame控件等等。
第6章 控件与用户窗体代码【超实用VBA】
第6章控件与用户窗体范例67 文本框只能输入数值Private Sub TextBox1_KeyPress(ByVal KeyANSI As MSForms.ReturnInteger) With TextBox1Select Case KeyANSICase Asc("0") To Asc("9")Case Asc("-")If InStr(1, .Text, "-") > 0 Or .SelStart > 0 ThenKeyANSI = 0End IfCase Asc(".")If InStr(1, .Text, ".") > 0 Then KeyANSI = 0Case ElseKeyANSI = 0End SelectEnd WithEnd SubPrivate Sub TextBox1_Change()Dim i As IntegerDim Str As StringWith TextBox1For i = 1 To Len(.Text)Str = Mid(.Text, i, 1)Select Case StrCase ".", "-", "0" To "9"Case Else.Text = Replace(.Text, Str, "")End SelectNextEnd WithEnd Sub范例68 限制文本框的输入长度Private Sub TextBox1_Change()TextBox1.MaxLength = 6End Sub范例69 验证文本框输入的数据Private Sub CommandButton1_Click()With TextBox1If (Len(Trim(.Text))) = 15 Or (Len(Trim(.Text))) = 18 ThenCells(Rows.Count, 1).End(xlUp).Offset(1, 0) = .TextElseMsgBox "身份证号码错误,请重新输入!"End If.Text = "".SetFocusEnd WithEnd Sub范例70 文本框回车自动输入Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)Dim r As Integerr = Cells(Rows.Count, 1).End(xlUp).RowWith TextBox1If Len(Trim(.Text)) > 0 And KeyCode = vbKeyReturn ThenCells(r + 1, 1) = .Text.Text = ""End IfEnd WithEnd Sub范例71 文本框的自动换行Private Sub UserForm_Initialize()With TextBox1.WordWrap = True.MultiLine = True.Text = "文本框是一个灵活的控件,受下列属性的影响:Text、" _& "MultiLine、WordWrap和AutoSize。
ExcelVBA在工作表(Worksheet)中动态添加按钮控件并添加事件的示例
ExcelVBA在工作表(Worksheet)中动态添加按钮控件并添加事件的示例Sub MakeButton()'自动添加一个Sheet'动态生成一个按钮控件'动态生成事件'Dim WSheet As WorksheetDim MyNewbtn As OLEObjectDim Target As RangeDim ShtCodeName As StringSet WSheet = Worksheets.Add(After:=ActiveSheet)' = "新表"Set Target = Cells(15, 7)'Set MyNewbtn = WSheet.OLEObjects.Add(ClassType:="mandButton.1 ", Link:=False _, DisplayAsIcon:=False, Left:=Target.Left, Top:=Target.Top, Width:=92.25, Height:= _30) = "MyNewButton" '设置按钮名MyNewbtn.Object.Caption = "我的按钮" '设置按钮标题ShtCodeName = WSheet.CodeName'也可以是'ShtCodeName = ThisWorkbook.Worksheets("新表").CodeName''向新表中添加事件'注意:'1、添加事情的程序名一定要与添加的按钮名称对应'2、如果出现"不信任到Visual Basic Project 的程序连接"的错误,解决方法为:' 打开Excel-》工具-》宏-》安全性-》可靠发行商,选中“信任对于Visiual Basic 项目的访问”,按确定即可。
vb6中如何动态添加控件
vb6中如何动态添加控件vb6中可以动态添加控件,不用控件数组:object.add (progid, name, container)参数说明:object:必需。
一个对象表达式,其值是“应用于”列表中的一个对象。
progid:必需。
一个标识控件的字符串。
大多数控件的 progid 都可通过查看对象浏览器来决定。
控件的 progid 是由控件的库和类组成的。
例如,commandbutton 控件的 progid 是mandbutton。
在progid 与对象浏览器中所显示的不一样的情况下,visual basic 将显示一个包括正确 progid 的错误信息。
name:必要。
一个字符串,用来标识集合的成员。
container:可选。
一个对象引用,它指定控件的容器。
如果没有指定或为null,缺省值为controls 集合所属的容器。
通过指定该参数,可以把一个控件放置在任何现存的容器控件(如frame 控件)中。
用户控件或 activex 文档也可以作为一个容器。
举例:(在picture1上面添加一个commandbutton)private sub form_load()form1.controls.add "mandbutton", "cmdok", picture1with form1!cmdok.visible = true.width = 500.caption = "确认(&y)"end withend sub重点:当您添加一个未引用的需要许可证的控件到一个现存的(已部署好的)应用程序时,在使用 add 方法之前您必须也添加这个控件的许可证关键字。
在运行时添加未引用的控件您也可以利用 add 方法来动态添加一个在工程中没有被引用的控件。
(“未引用的”控件是不出现在 toolbox 中的控件)。
为此,您必须也把控件的license 关键字添加到 licenses 集合中。
Excel VBA 窗体批量创建插件(按钮,标签,单选......)
在excel 文件工作表中创建按钮插件,按钮名称为CommandButton1,如下所示:粘贴下面的代码至创建按钮工作表后台书写代码处,点击按钮如下所示:Private Sub CheckBox1_Click()End SubPrivate Sub CommandButton1_Click()Dim TempFormDim LeftPos As IntegerDim X As IntegerDim i As IntegerDim TopPos As Integer'创建窗体Set TempForm = ActiveWorkbook.VBProject.VBComponents.Add(3) '声明创建窗体插件Dim NewOptionButton As MSForms.OptionButtonDim newCommandButtonn As mandButtonDim newCheckBox As MSForms.CheckBoxDim newLabel As belLeftPos = 4k = 1TopPos = 5'循环创建单选框个数(可根据实际情况而定)For i = 1 To 10LeftPos = 4'创建单选框Set NewOptionButton = TempForm.Designer.Controls.Add("forms.OptionButton.1")'设置单选框属性With NewOptionButton.Width = 60.Caption = k & "℃".Height = 15.Left = LeftPos.Top = TopPos.Tag = k & "℃".AutoSize = TrueEnd WithLeftPos = LeftPos + 30k = k + 1TopPos = i * 20 + 5'创建单选框宏代码With TempForm.CodeModuleX = .CountOfLines.InsertLines X + 1, "Private Sub OptionButton" & i & "_Click()".InsertLines X + 2, " bel1.caption=""" + "你的选择:" + "" + CStr(i) + "" + "℃" + """".InsertLines X + 3, "End Sub"End WithNext i'创建按钮(可以批量创建)Set newCommandButtonn = TempForm.Designer.Controls.Add("mandButton.1") '设置按钮属性 = "MyCommandButton"newCommandButtonn.Object.Caption = "确定"With newCommandButtonn.Width = 60.Height = 20.Left = LeftPos.Top = TopPos + 40.AutoSize = FalseVisible = TrueEnd With'创建标签(可以批量创建)Set newLabel = TempForm.Designer.Controls.Add("bel.1")'设置标签属性newLabel.Caption = ""With newLabel.Width = 120.Height = 20.Left = LeftPos.Top = TopPos.AutoSize = FalseVisible = TrueEnd With'设置创建按钮宏代码With TempForm.CodeModuleX = .CountOfLines.InsertLines X + 1, "Private Sub MyCommandButton_Click()".InsertLines X + 2, "msgbox bel1.Caption + me.check.caption ".InsertLines X + 3, "me.hide".InsertLines X + 4, "end sub"End WithSet newCheckBox = TempForm.Designer.Controls.Add("Forms.CheckBox.1")newCheckBox.Caption = "java" = "check"With newCheckBox.Width = 120.Height = 20.Left = LeftPos.Top = TopPos + 20.AutoSize = FalseVisible = TrueEnd With'设置窗体属性With TempForm.Properties("Caption") = "窗体界面".Properties("Width") = LeftPos + 200.Properties("Height") = TopPos + 100.Properties("Left") = 160.Properties("Top") = 100End With'显示窗体erForms.Add().Show'点击窗体关闭打叉图标,则关闭窗体ActiveWorkbook.VBProject.VBComponents.Remove VBComponent:=TempForm End Sub点击事件如图所示:小例子,有兴趣者不妨看看,其实程序都是相通的,所谓条条大路通罗马,(*^__^*) 嘻嘻……。
使用代码添加窗体及控件
技巧1使用代码添加窗体及控件VBA中的用户窗体为用户提供了可视化的操作界面,在用户窗体中一般都包含控件以便与用户进行交互。
我们通常是在VBE中使用菜单“插入”→“用户窗体”来创建用户窗体,然后拖动工具箱中的控件到用户窗体中,也可以使用代码来添加用户窗体及其控件,代码如下:Private Sub CommandBu tton1_Cli ck()Dim myForm As VBCompone ntDim myTextBox AsControlDim myButton AsControlDim i As IntegerSet myForm= ThisWorkb ook.VBPro ject.VBCo mponents. Add(vbext _ct_MSFor m)With myForm.Properti es("Name" )= "Formtest ".Properti es("Capti on")="演示窗体".Properti es("Heigh t")= "180".Properti es("Width ")= "240"Set myTextBox =.Designer .Controls .Add("For man dButton.1 ")With myTextBox.Name= "myTextBo x".Caption ="新建文本框".Top = 40.Left= 138.Height= 20.Width= 70End With Set myButton =.Designer .Controls .Add("For man dButton.1 ")With myButton .Name= "myButton ".Caption ="删除文本框".Top = 70.Left= 138.Height= 20.Width= 70End WithWith.CodeModu lei= .CreateEv entProc(" Click", "myTextBo x").ReplaceL ine i+ 1,Space(4) &"Dim myTextBox As Control" &Chr(10) &Space(4) &"Dim i As Integer" &Chr(10) &Space(4) &"Dim k As Integer" _&Chr(10) &Space(4) &"k= 10"& Chr(10)& Space(4) &"For i =1To5" &Chr(10) &Space(8) &"Set myTextBox =Me.Contro ls.Add(bs trprogid: =""Forms. TextBox.1 "")" _&Chr(10) &Space(8) &"With myTextBox "& Chr(10)& Space(12) &".Name = ""myTextB ox""&i" &Chr(10) &Space(12) &".Left = 20" _&Chr(10) &Space(12) &".Top= k"& Chr(10)& Space(12) &".Height =18"& Chr(10)& Space(12) &".Width = 80" _&Chr(10) &Space(12) &"k= .Top+ 28"& Chr(10)& Space(8) &"End With"& Chr(10)& Space(4) & "Next" i= .CreateEv entProc(" Click", "myButton ").ReplaceL ine i+ 1,Space(4) &"Dim i As Integer" &Chr(10) &Space(4) &"On Error Resume Next"& Chr(10)& Space(4) &"For i =1To5" &Chr(10) &Space(8) & "Formtest .Controls .Remove ""myTextB ox""&i" &Chr(10) &Space(4) & "Next"End WithEnd WithEnd Sub 代码解析:使用代码添加一个用户窗体及其两个按钮控件,并为按钮控件添加单击事件及其相应的代码。
VB6.0动态加载ActiveX控件
熟悉VB的朋友对使用ActiveX控件一定不会陌生,众多控件极大地方便了编程,但唯一的缺陷是不能动态加载控件,必须在设计时通过引用,将控件放置在窗体上。
VB6.0已能够解决该问题,只是帮助中没有明确说明,并且没有描述到一些关键功能,由于以前的版本中可以动态创建进程外服务:如果对象是外部可创建的,可在Set 语句中用New 关键字、CreateObject 或GetObject 从部件外面将对象引用赋予变量。
如果对象是从属对象,则需使用高层对象的方法,在Set 语句中指定一个对象引用:Dim xlApp1 As Excel.ApplicationSet xlApp1 = New Excel.Application或Dim xlApp As Object '定义存放引用对象的变量。
Set xlApp = CreateObject("excel.application")xlApp.Visible = True这些语法很容易造成误导,以为动态加载ActiveX控件也是此方法,可能有朋友也象我一样利用CreateObject尝试了无数次,却无功而返,不知微软公司是出于何种考虑,动态加载ActiveX控件是扩展控件集合的方式实现,通过实际摸索,终于就如何实现动态ActiveX控件找出了一条切实可行的方法,下面以一个具体的实例来详细说明。
一、ActiveX控件ActiveX 控件是Visual Basic 工具箱的扩充部分。
使用ActiveX 控件的方法与使用其它标准内装的控件,如CheckBox 控件,完全一样。
在程序中加入ActiveX 控件后,它将成为开发和运行环境的一部分,并为应用程序提供新的功能。
ActiveX 部件通过客户端/服务器关系与应用程序—及与部件相互之间—交互作用。
客户端是使用部件功能的应用程序代码或部件。
服务器是部件及其关联的对象。
例如,假设应用程序使用ActiveX 控件来提供一个标准的雇员窗体,供公司的多种应用程序使用。