|
本帖最后由 amulee 于 2011-6-3 09:25 编辑
常用VBA的朋友对这个界面应该不会陌生吧,这是一个最常用的窗体输入界面。点击确定按钮后,程序将控件中的值输入到表格中。在此,我要介绍这个向单元格赋值过程的三种不同处理方式:
1、通常我们采用的方法,即依次将各控件的值赋值到单元格中。代码如下:
- Private Sub UserForm_Initialize()
- With Me.ComboBox1
- .Style = fmStyleDropDownList
- .AddItem "男"
- .AddItem "女"
- .ListIndex = 0
- End With
- End Sub
- Private Sub CommandButton3_Click()
- '将各控件值依次输入单元格中
- With Sheet3.Range("A" & Sheet3.Cells.Rows.Count).End(xlUp).Offset(1, 0)
- .Offset(0, 0) = Me.TextBox1
- .Offset(0, 1) = Me.ComboBox1
- .Offset(0, 2) = Me.TextBox3
- End With
- End Sub
复制代码 这个输入方法很直观,输入到单元格中的数据均为文本。
2、运用Excel的强制类型转换,将三个控件编为一个数组,可以在单元格内直接写入该数组。代码如下:
- '定义一个变量,在窗体存在期间始终有效
- Dim ArrTxt()
- '窗体初始化时候,绑定TextBox控件到数组
- Private Sub UserForm_Initialize()
- ReDim ArrTxt(1 To 3)
- Set ArrTxt(1) = Me.TextBox1
- Set ArrTxt(2) = Me.ComboBox1
- Set ArrTxt(3) = Me.TextBox3
- With Me.ComboBox1
- .Style = fmStyleDropDownList
- .AddItem "男"
- .AddItem "女"
- .ListIndex = 0
- End With
- End Sub
- Private Sub CommandButton2_Click()
- 'Excel的智能类型转换,将各控件的默认属性作为数组的返回值。
- Sheet3.Range("A" & Sheet3.Cells.Rows.Count).End(xlUp).Offset(1, 0).Resize(1, 3) = ArrTxt
- End Sub
复制代码 可以看见,虽然ArrTxt为对象数组,但是这个数组可以直接赋值到单元格中。这个就是Excel的强制类型转换,在很多地方都会看见这个强制的类型转换。这给对象批量赋值提供了很大的方便。但是这个方法输入到单元格中的任然为文本,即便是数字,也只会会转换成文本数字。
3、利用Transpose进行类型转换。
Transpose的功效之一,智能的类型转换,可以根据实际情况进行对象属性的转换,文本数字不再保留其文本格式,而是转换为数字。
- '定义一个变量,在窗体存在期间始终有效
- Dim ArrTxt()
- '窗体初始化时候,绑定TextBox控件到数组
- Private Sub UserForm_Initialize()
- ReDim ArrTxt(1 To 3)
- Set ArrTxt(1) = Me.TextBox1
- Set ArrTxt(2) = Me.ComboBox1
- Set ArrTxt(3) = Me.TextBox3
- With Me.ComboBox1
- .Style = fmStyleDropDownList
- .AddItem "男"
- .AddItem "女"
- .ListIndex = 0
- End With
- End Sub
- '确定输入代码
- Private Sub CommandButton1_Click()
- 'Transpose除了对类型进行强制转换外,更可将文本数字转换为数字。更为智能。
- Dim arr
- arr = WorksheetFunction.Transpose(WorksheetFunction.Transpose(ArrTxt))
- Sheet3.Range("A" & Sheet3.Cells.Rows.Count).End(xlUp).Offset(1, 0).Resize(1, 3) = arr
- End Sub
复制代码 来看看这三种方法的效果吧。
窗体输入界面.rar
(11.66 KB, 下载次数: 371)
|
评分
-
查看全部评分
|