龙空技术网

Excel VBA ActiveX实例:申明公共变量,一个窗体实现多个功能

捌贰春秋VBA 830

前言:

而今大家对“vbnetactivex控件”大概比较珍视,兄弟们都想要剖析一些“vbnetactivex控件”的相关资讯。那么小编同时在网摘上收集了一些对于“vbnetactivex控件””的相关知识,希望同学们能喜欢,小伙伴们一起来了解一下吧!

如下图所示,员工入职登记、查询员工信息共用同一个窗体:窗体Caption、标签Caption、按钮1的Caption、按钮3的Caption不一样而已。

员工入职登记

查询员工信息

思路:

申明公共变量,可以在不同窗体直接调用,传递不同参数,则完成不同的功能。

一、在模块申明公共变量YGID,存放员工身份证号码

在模块中申明公共变量

二、选中列表框一行,将该名员工的身份证号码赋值给公共变量YGID

Private Sub ListBox1_Click()

Dim i%

YGID = "" '清空公共变量YGID

'循环Listbox1列表

For i = 0 To Me.ListBox1.ListCount - 1

If Me.ListBox1.Selected(i) Then

YGID = Me.ListBox1.List(i, 6) '在列表框选中员工的身份证号码赋值给公共变量YGID

Me.员工资料.Enabled = True

End If

Next i

End Sub

三、员工信息窗体加载事件:若公共变量YGID为空,则执行员工入职登记功能;若公共变量YGID不为空(即存在员工身份证号码),则将该名员工的所有信息在窗体中展示出来。

'窗体初始化,接收公共变量YGID的值

Private Sub UserForm_Initialize()

On Error Resume Next

Dim arr, j%, rng As Range

'清空部门列表,重新加载部门列表

Me.部门.Clear

arr = Sheets("设置").Range("A9").CurrentRegion

For j = 1 To UBound(arr, 2)

Me.部门.AddItem arr(1, j)

Next j

If YGID = "" Then '公共变量YGID为空,该窗体为员工入职登记

Me.Caption = "员工入职登记"

Me.Label8.Caption = "员工入职登记"

Me.CommandButton1.Caption = "保存信息"

Me.CommandButton3.Caption = "清 空"

Call 重置控件

Else '公共变量YGID不为空,则在本窗体加载员工信息

Me.Caption = "员工详细资料"

Me.Label8.Caption = "员工详细资料"

Me.CommandButton1.Caption = "修改信息"

Me.CommandButton3.Caption = "办离职"

Set rng = Sheets("花名册").Range("J:J").Find(YGID, , , 1) '花名册第J列查询YGID

If Not rng Is Nothing Then '若该员工在花名册,则在窗体加载信息

'窗体填入:姓名

Me.姓名.Text = rng.Offset(0, -8)

'窗体填入:性别

If rng.Offset(0, -7) = "男" Then Me.OptionButton1.Value = True

If rng.Offset(0, -7) = "女" Then Me.OptionButton2.Value = True

'窗体填入:部门

Me.部门.Value = rng.Offset(0, -6)

'窗体填入:职务

Me.职务.Value = rng.Offset(0, -5)

'窗体填入:入职时间

Me.入职时间.Text = Format(rng.Offset(0, -4), "yyyy/mm/dd")

'窗体填入:手机号码

Me.手机号码.Text = rng.Offset(0, -1)

'窗体填入:身份证号码

Me.身份证号码.Text = rng

'窗体填入:家庭住址

Me.家庭住址.Text = rng.Offset(0, 1)

'窗体填入:是否住宿

If rng.Offset(0, 2) = "住宿" Then

Me.住宿.Value = True

Me.宿舍地址.Enabled = True

Me.房间号.Enabled = True

Me.铺位.Enabled = True

Me.入住时间.Enabled = True

Else

Me.住宿.Value = False

Me.宿舍地址.Enabled = False

Me.房间号.Enabled = False

Me.铺位.Enabled = False

Me.入住时间.Enabled = False

End If

'窗体填入:宿舍地址

Me.宿舍地址.Value = rng.Offset(0, 3)

'窗体填入:房间号

Me.房间号.Value = rng.Offset(0, 4)

'窗体填入:铺位

Me.铺位.Value = rng.Offset(0, 5)

'窗体填入:入住时间

Me.入住时间.Text = Format(rng.Offset(0, 6), "yyyy/mm/dd")

Else

MsgBox "该员工不存在!", vbCritical, "错误!"

End If

End If

End Sub

标签: #vbnetactivex控件