表格制作教程入门_Excel VBA入门教程5之控件及员工卡案例制作

1e5b356b023414eacb316f48abf02100.png

        VBA控件是制作UI(用户界面)的基本单元,控件的使用使得VBA应用可以更灵活,同时功能更为强大。

d8237a96d11d5742597087e2f7d333f6.png

工作表内的ActiveX控件

      ActiveX控件在开发者工具(developer)选项卡中 ,如果选项卡中没有开发者工具,那么需要先激活开发者工具。

步骤 : 文件(File)-->选项(option)-->自定义功能区(Customize Ribbon)-->勾选开发者工具(developer)

0491102a223d3e3bfd9845e28446a7bd.png

c8bde8bbcaaf4e657286640102d2f395.png

设计UI

      点击开发者工具(developer)中的插入(insert) , 然后就可以看到ActiveX Control , 我们先选择Combobox (复选框) ,并在工作表中进行绘制,再选择CommandButton (按钮) , 最后再绘制几个Textbox(文本框)用来显示员工信息,具体见以下视频:

       最后再绘制一个image 图片框,用来显示不同的图片,效果如下

8d96fb5bd2dd3b640e8df3382a2317d1.png

31d213b40f062ad610793e249a83632c.png

员工卡数据及思路

先在Sheets(“Sheet1”)A23:E30区域加入以上原始信息,如下所示:

c62cae6787f4be85ae1a8c2d339f2715.png

员工卡的思路如下:

首先在右端的Combobox中加入可选择的姓名 ,选择姓名后,点击确认按钮后,相对应的姓名、电话、职位、年龄、工龄等信息就会出现在左端的文本框中 , 而对应人名的头像则会出现在右端的图片框中。

573218a05124c4b92112d6a9eb846fb0.png

Combobox 中加入数据

         因此我们首先在workbook_open (代表打开工作簿时,执行程序)中加入combobox选择框的姓名数据,操作如下视频:

代码如下:

Private Sub Workbook_Open()  For i = 24 To 30 Step 1       Sheets("Sheet1").ComboBox1.AddItem Sheets("Sheet1").Range("A" & i).Value  NextEnd Sub

代码解释:

第一行:开始语句打开工作簿

第二行:按数据源中的信息,由于姓名分布于24至30行,因此我们遍历的范围也是24至30

第三行:在表格Sheet1 中的Combobox1中使用Additem的方法加入 遍历的A24至A30行的数据

第四行:如果i小于30则返回第二行,如果i =30 则结束循环

第五行:结束语句

e6d45bb50eac77412ca0812400070252.png

准备图片

       在本Excel的同级目录下,准备和表格中姓名相同的图片,也就是将图片命名为姓名.jpg , 右键点击图片,进入属性,详细信息里面有图片的像素,可以使用照片编辑器,将图片大小编辑成同样的宽和高,以下是200X200 ,这样图片框显示时,所有图片都是一样大的,更美观。

f5e6611cf240f6f02c761262e53a5d29.png

b4394f708964f4d0a014d4cb0c67b0c2.png

eac44cadf601b2f2dda07e58699f8a55.png

编写代码

        在设计模式下,双击确认按钮,进入CommandButton_click (点击按钮时执行程序)中编辑代码:

Private Sub CommandButton1_Click()  person_name = Sheets("Sheet1").ComboBox1.Value  Path = ThisWorkbook.Path  Sheets("Sheet1").Image1.Picture = LoadPicture("")  For i = 24 To 30 Step 1       If person_name = Range("A" & i).Value Then             Str_path = "" & Path & "/" & person_name & ".jpg"             Sheets("Sheet1").TextBox1.Text = Range("A" & i).Value          Sheets("Sheet1").TextBox2.Text = Range("B" & i).Value          Sheets("Sheet1").TextBox3.Text = Range("C" & i).Value          Sheets("Sheet1").TextBox4.Text = Range("D" & i).Value          Sheets("Sheet1").TextBox5.Text = Range("E" & i).Value               Sheets("Sheet1").Image1.Picture = LoadPicture(Str_path)      End If      NextEnd Sub

我们解释一下代码:

第一行:开始语句,代表在按钮点击以后,触发这个程序开始执行,我们也称它为监听点击事件

第二行:将表格Sheet1中的Combobox选择框中的值赋值给person_name

第三行:将本工作簿的路径赋值给Path变量

第四行:将Sheet1中的image1(即图片控件)中的图片进行清除,这样做的

目的是:在执行员工卡信息时,保证image1中没有图片,如果不加这一句,在执行很多次以后图片会不断堆积在image1中。

第五行:按照数据源中的数据的行数范围进行遍历。

第六行:在没遍历一行时,我们都进行判定,判定该A列该行的姓名是不是和Combobox1当前的值一致,如果一致,那么执行7至12行语句,如果不一致,则继续判定下一行,直至i=30.

第七行:将本工作簿目录路径和照片名称(带”.jpg“后缀)拼接起来,使得加载图片时,程序知道需要调用什么图片。

第八行:当姓名=Combobox1中的值时,我们获得了一个 i 行,这时我们就能将A列i行的姓名赋值给Textbox1,让姓名显示在第1个文本框中

第九行:将B列i行的电话赋值给Textbox2,让电话显示在第2个文本框中

第十行:将C列i行的职位赋值给Textbox3,让职位显示在第3个文本框中

第十一行:将D列i行的年龄赋值给Textbox4,让年龄显示在第4个文本框中

第十二行:将E列i行的工龄赋值给Textbox4,让工龄显示在第5个文本框中

第十三行:使用loadPicture(Path)函数,将路径内对应姓名的图片加载到图片框image1中

第十四行:条件判断的结束语句end if

第十五行:如果i小于30则返回到第五行,执行下一个i,如果i =30 则结束循环

第十六行:程序结束语句

这样,一个员工信息卡的程序就执行完毕了。

a9e378eb7b5e9db9d8ad608d0ba75089.png

习题及上一章答案

习题:试着自己制作一个员工信息卡。

Excel VBA入门教程4 for循环习题答案:

Sub ninenine()For i = 1 To 9 Step 1    For j = 1 To i Step 1                  Sheets("Sheet4").Cells(i, j).Value = i & " X " & j & " = " & i * j        NextNextEnd Sub' For 专题习题答案

更多内容和资料请关注:

049952dfb1629af0f5cda13634e3099f.gif

7bb7b5618903ace46f3de198d5c677da.png

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值