定制Excel选择性输入列表:[3]VBA分级连选法

 时间:2024-10-13 16:22:03

数据量较大的信息经常是分级管理的,比如像行政区划按省、市、县三级区划管理,类似这样的信息输入适合使用“VBA分级连选法”。本文以地址输入为例,介绍“Excel选择性输入列表——VBA分级连选法”制作流程。

定制Excel选择性输入列表:[3]VBA分级连选法

工具/原料

Excel

数据结构规划

1、本文以地址输入为例,使用国家统计局发布的全国三级行政区划数据库,我们将在其既有的数据结构上进行编程。如果是未经规划的数据,可仿照此例进行数据结构规划。先来了解一下全国三级行政区划数据库的数据结构。

2、数据一共四列:第一列是编号。三级区划放在一起统一进行编号,是名称的唯一性标识。第二列是名称。第三列是本级序号。第四列是上级名称的编号。用于上级索引。

定制Excel选择性输入列表:[3]VBA分级连选法

3、数据按“块”划分。第一块是省级数据,后面以省为单位将所属市、县组织为不同的块,块与块之间间隔一行。

定制Excel选择性输入列表:[3]VBA分级连选法

4、数据块中,第一行是省级名称,后面每个市分为一个小块。

定制Excel选择性输入列表:[3]VBA分级连选法

5、通过第四列的索引值可以找到上一级。

定制Excel选择性输入列表:[3]VBA分级连选法

Excel选择性输入列表——VBA分级连选法制作流程

1、插入用户窗体参考上期方法插入一个用户窗体,在属性窗口中将其名称改为“F2”,标题(Caption)改为“地址连选”,背景色设置为浅绿色。

2、插入控件在窗体F2中插入三个标签、三个复合框(也叫下拉列表框)、一个按钮,调整好大小、位置。在属性窗口中将三个标签的BackStyle属性值设置为1,Caption属性分别设置为:“省/自治区/直辖市”、“市”、“县/区”,将三个复合框的名称分别改为:CBCBCB3,将命令按钮的名称改为confirm。其它属性使用默认值即可。

定制Excel选择性输入列表:[3]VBA分级连选法

3、窗体程序设计双击窗体F2进入代码窗口,开始下一个环节:窗体程序设计。

定制Excel选择性输入列表:[3]VBA分级连选法

4、窗体程序设计——UserForm_Activate()事件'当窗体被激活张虢咆噘时触发该事件,在事件过程中给复合框CB1赋值省级名称(数据存放在“省市县”工作表b2:b34区阄莱决胪域),设置窗体显示位置为单元格跟随,将CBCB3置为不可用状态(此时一级选项尚未选择)。PrivateSubUserForm_Activate()CB1.List=Sheets("省市县").Range("b2:b34").ValueF2.Top=ActiveCell.Top+50F2.Left=ActiveCell.Left+ActiveCell.Width+25CB2.Enabled=FalseCB3.Enabled=FalseEndSub

5、窗体程序设计——CB1_Change()事件'当完成一级选项的选择时触发拉悟有仍该事件。在事件过程中激活CB婷钠痢灵2,并给其赋值二级名称。通过全局变量“id1”将所选一级名称的编号传递给CB2_Change()事件。DimId1AsStringPrivateSubCB1_Change()Fori=2To34IfSheets("省市县").Cells(i,2).Value=CB1.ValueThenCB2.Enabled=True:CB2.ClearId1=Sheets("省市县").Cells(i,1)ExitForEndIfNextiIfi>34ThenCB2.Enabled=False:CB3.Enabled=FalseElseFori=37To3401IfSheets("省市县").Cells(i,4)=Id1ThenCB2.AddItemSheets("省市县").Cells(i,2).ValueEndIfNextiEndIfEndSub

6、窗体程序设计——CB2_Change()事件'当完成二级选项的选择时触发拉悟有仍该事件。在事件过程中激活CB泌驾台佐3,并给其赋值三级名称。PrivateSubCB2_Change()WithSheets("省市县")Fori=36To3401'定位一级数据大块If.Cells(i,1).Value=Id1ThenExitForNextiDoWhile.Cells(i,1)<>""'定位二级数据小块If.Cells(i,4)=Id1And.Cells(i,2)=CB2.ValueThenid2=.Cells(i,1):ExitDoEndIfi=i+1LoopIf.Cells(i,1)=""ThenCB3.Enabled=FalseElseCB3.Enabled=True:i=i+1:CB3.Clear'激活CB3DoWhile.Cells(i,4)=id2'将三级数据赋值给CB3CB3.AddItem.Cells(i,2).Value:i=i+1LoopEndIfEndWithEndSub

7、窗体程序设计——confirm_Click()事件'当点击命令按钮时触发该事件。在事件过程中将三级选项的值合并在一起赋值给当前单元格,之后卸载窗体F2。PrivateSubconfirm_Click()ActiveCell.Value=CB1.Value&CB2.Value&CB3.ValueUnloadF2EndSub

8、工作表程序设计在VBA工程窗口中双击需调用F2窗体的工作表,进入其代码窗口,诶受祗错输入下面的程序。PrivateSubWorksheet_SelectionChange(蚱澄堆别ByValTargetAsRange)DimEndRowAsSingleEndRow=Range("a65536").End(xlUp).RowIfTarget.Row>1AndTarget.Row<=EndRowAnd_Target.Column=4AndTarget.Rows.Count=1_ThenF2.ShowEndSub

定制Excel选择性输入列表:[3]VBA分级连选法

评价

1、分级连选法适合处理数据量大、容易分级管理的信息录入,是前两种方法的延伸,编程难度稍大一些。不过不要紧,文中对程序做了详细说明,很容易根据实际需要修改。

定制Excel选择性输入列表:[3]VBA分级连选法

如何利用VBA代码制作单斜线单元格 Excel中如何利用VBA更改字体和字号? 图示EXCEL表格vba系列67之BordersLineStyle网格 Excel如何自定义选项卡和命令组? Excel VBA取消全部隐藏的工作表?
热门搜索
乌兰托娅图片 老三电影 唯美手绘图片 车图片大全跑车 男同性恋电影