Ecel数据分析教程 第8章上机题及课后习题_第1页
Ecel数据分析教程 第8章上机题及课后习题_第2页
Ecel数据分析教程 第8章上机题及课后习题_第3页
Ecel数据分析教程 第8章上机题及课后习题_第4页
Ecel数据分析教程 第8章上机题及课后习题_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

上机题8

、设置用户窗体与Excel工作表互动

要求在工作表中建立一个用户窗体,通过该窗体实现与Excel工作表中的单

元格进行输入/输出的互动,并可实现简单的计算。

步骤一:点击“开发工具I代码"区的"VisualBasic”按钮,在弹出的VBA

界面中,右击Sheetl,在弹出的快捷菜单中选择''插入I用户窗体”,如图所示:

口向眩萼*@工作簿1-

文件开始插入页面布局公式数据审阅视图开发工具帮助

杳|已录制宏,濯

[।11”E

....D.…庭使用相对引用国

VisualBasic宏力口ExcelCOM力口载项插入设计模式

2!载项加载项回

代码加载项控件

皆MicrosoftVisualBasicforApplications-工作簿1

文件⑹编辑出视图M插入①格式9)调试⑼运行团工具①

图图▼fel

匚程-VBAProject凶

尊Solver(SOLVER.XLAI

想VBAProject(FVICRES

VBAFroject(工作第1

白…,巴Microso£tExcel对:

朗西1m

超二)Thi臼查看代码9)

国查菽掇⑥

目切换文件夹

VBAProject属性但…3

插入网用用户窗便⑭

导入文件0)…图模块(M)

此时弹出用户窗体,并且同时弹出控件工具箱,如图所示:

皆MicrosoftVisualBasicforApplications-工作簿1

文件⑹编辑(E)视图M插入(1)格式⑼调试⑼运行图)

工程・VBAProject

国三臼国工作簿1-UserForml

[±]^Solver(SOLVER.XLA1

由魅VBAProjaUserForml

0魅VBAProj)工具箱

白…由Micro

OS控件I

超)T

0•&窗体QA0EE0O

巴国g亡)I[±]Q

步骤二:在用户窗体上画出一个标签、一个文本框和一个命令按钮,并设置

好各自的Caption属性,如图所示:

普MicrosoftVisualBasicforApplications-工作簿1

文件(E)编辑(E)视图M插入0)格式9)调试(D)运行四工具①

w)留卷雪得因❷

工程・VBAProjectX

国3I回图工作簿1-UserForml(UserF

E)Solver(SOLVER.XLA1

EVBAProjej

耳.尊VBATroj(工具箱

Si&Micro

OS控件]

L..超|T

白…巴窗体13A眄团国[205

国U巴]@a巴!囹£2

步骤三:点击左侧的“查看代码”按钮,输入以下代码:

PrivateSubUserForm_Initialize()'程序执行时首先运行窗体初始化过程

If[al]=,,nThen

TextBoxl.Value=’此时默认文本框可用,可执行点击命令按钮过程

Else

TextBoxl.Value=[al]

TextBoxl.Enabled=False

EndIf

EndSub

PrivateSubCommandButtonl_Click()

IfTextBoxl.Value=""Then

MsgBox”请输入内容”

Else

[al]=TextBoxl.Value

UnloadMe

EndIf

EndSub

如图所示:

皆MicrosoftVisualBasicforApplications-工作簿1

文件(E)编辑CE)视图便)插入Q)格式9)调试©)运行⑻工具(

免外»叫厘留卷写&❷行11,

工程-VBAProjectX

回三回工作簿1-UserForml(Us

叫二五|(SOLVER.XLA.

由|艺直代相[ject(FUKCKES

IE]VBAProject(工作簿1

白^^MicrosoftExcel对:

81Sheetl(Sheetl.

……Thistforlcbook

白…&窗体

:•…国UserForm.

B工作簿1-UserForml(代码)

^UserForB▼||lnitiallze

PrivateSubCommandButtonl_C1ick()

l£TextBoxl.Value=""Then

MsgBox”请输入内容”

Else

[al]=TextBoxl.Value

UnloadMe

EndI£

EndSub

PrivateSubUserFormInitialize。

|I£[al]=垠Then

TextBoxl.Value=

Else

TextBoxl.Value=[al]

TextBoxl.Enabled=False

EndI£

EndSub

由图中可见,VBA程序如同所有VB程序一样,是事件驱动的,与代码的

先后顺序无关,只与事件发生的先后顺序有关。

步骤四:点击VBA界面上的“运行”按钮,将在Excel的Sheetl界面上弹

出UserForml用户窗体,在其文本框中输入123,点击确定,如图所示:

A

1CD

2

3

4

5

6

7

8

9_

结果将隐藏当前用户窗体,并在Sheetl工作表的A1单元格中出现“123”。

如果不输入内容就点击“确定”,将弹出如图所示的提示框:

MicrosoftExcelX

请输入内容

确定

单击“确定”后再次回到刚才的用户窗体。也就是说,如果A1为空的话,

必须要输入点什么内容才能关闭当前的用户窗体,并将输入的内容传入到A1对

话框。

反之,如果先在Sheetl工作表的A1单元格中输入“456”,然后再去VBA

界面上点击"运行"按钮,将在Sheet1工作表上弹出如图所示的UserForml用

户窗体:

其中已经有了“456”这个数据,并且是不可改变的灰色。

现在我们将要升级这个程序。

第1步,可将用户窗体上标签中的文字由“A1的内容是"改为“选中单元

格的内容是”,同时将代码中所有的“[al]”都改为“Selection”,则可实现对任

意单元格的操作,如图所示:

AD

1

2

3

4

5

FormlX

6

7元格的

8

9

10

11

第2步,想要在标签中确定是哪个单元格的内容,也就是要读出所选单元格

的名称,这就需要先在代码中判断是哪个单元格被选中,只需要在用户窗体初始

化事件(UserForm_Initialize()事件)中,在最前面添加如下代码:

DimaAsString

a=ActiveCell.Address(0j0),返回相对地址,缺省参数(1,1)是绝对地址

Labell.Caption=a+"的值是:"‘当然,标签框的内容也要电新设定

其中,ActiveCell.Address(O,0)也可写成Selection.Address(0,0)。

说明,此句中,如果将ActiveCelLAddress(O,0)写成ActiveCelLAddress,即

不写后面的参数,则表示引用了绝对地址,与写成ActiveCell.Address(l,1)的效

果一样,都返回类似$A$1这样的绝对引用,你可以自己试一下,如果参数写成

(0,1)或(1,0)会返回什么样的混合引用。参数1所在的行(或列)将成为绝对引

用。

运行效果如图所示:

UserForml

B5的值是:

7891

确定

第3步,想更改单元格中已有的数据,只需将用户窗体初始化事件中的以下

代码注释掉即可:

'TextBoxl.Enabled=False

这样,在单击“确定”按钮时就会触发CommandButtonl的Click事件,将

更改过的内容写进当前单元格。

其实,即使不注释这一句,在单击“确定”按钮时也是触发了CommandButtonl

的Click事件的,只不过当时文本框被禁用,所以无法输入任何新值,也就没有

任何新值被传到当前单元格去替换旧值了。

第4步,要想在选定任意单元格时弹出该窗体,就在Sheetl的代码页中添

加如下事件代码:

PrivateSubWorksheet_SelectionChange(ByValTargetAsRange)

UserForml.Show

EndSub

这一步还有个变异版,就是:不是在任意选择另外某个单元格时弹出该用户

窗体,而是在在切换到该工作表时(当然这就要求该工作簿中有几个工作表)就

自动跳出用户窗体,则需要在Sheetl的代码页中添加如下事件代码:

PrivateSubWorksheet_Activate()

UserForml.Show

EndSub

第5步:如果想在选定某个特定单元格(或某列、某行中的一个单元格)时

才自动跳出用户窗体,可将第4步中的代码进一步完善为:

PrivateSubWorksheet_SelectionChange(ByValTargetAsRange)

IfSelection.Rows.Row=2OrSelection.Rows.Row=4Then

IfSelection.Columns.ColumnMod2=1Then

UserForml.Show

EndIf

EndIf

EndSub

第6步:如果想在自动输入了数据的单元格右侧的单元格得到经过计算的结

果,例如,如果通过用户窗体的文本框在C2单元格输入“1.68”,希望在按下''确

定”后立即在D2单元格出现“身高为168厘米”,则只需在用户窗体代码页的

CommandButtonl_Click()事件中,在EndIf之前添加以下代码:

Selection.Offset(0,1)="身高为"&TextBoxl.Value*100&"厘米”

第7步:如果在窗体中输入了数据后又想反悔,除了可以直接点击窗体上的

关闭按钮外,也可以在窗体中再增加一个按钮CommandButton2,名为“取消”,

并为它添加代码如下:

PrivateSubCommandButton2_Click()

TextBoxl.Value=.....如无此句,则取消后文本框中将保留取消前的值

UserForml.Hide

EndSub

句中"身高为"&TextBox1.Value可改为"身高为"&Selection.Valueo

其中,如果没有“TextBoxl.Value="""这一句,则取消后如果紧接着又点击

了一个空单元格时,窗体的文本框中将保留取消前的值,这就看用户的需要了,

有时用户就需要这个效果,比如值输对了,但发现单元格点错了,就可以取消后

重新点选正确的单元格,此时不用再重新输入值,直接点击确定就可以把这个值

输入。不过有个问题:Label1的Caption属性值也一直保留了,直到下次点击了

“确定”后才会正常。

现在来看一看最终升级后的用户窗体和代码。用户窗体如图所示:

国工作簿-UserForml(UserForm)

代码页有两个,一个是Sheetl的代码页,如图所示:

丛工作簿Lxlsm-Sheetl(代码)IqIIBIII

Worksheet▼||SelectionChange

PrivateSubWorksheet_Activate()

UserForml.Show

EndSub

PrivateSubWorksheet_SelectionChange(ByValTargetAsRange)

l£Selection.Rows.Row=2OrSelection.Rows.Row=4Then

l£Selection.Columns.ColwnnMod2=1Then

UserForml.Show

EndI£

EndIf

EndSub

另一个是用户窗体的代码页,如图所示:

日工作簿-UserForml(代码)

UserFor®▼|glnitiallze

PrivateSubCommandButtonl_C1ick()

IfTextBoxl.Value=""Then

MsgBox"清输入内容”

Else

Selection=TextBoxl.Value

UnloadMe

Selection.Offset(0/1)="身高为"&TextBoxl.Value*100&"厘米"

Endl£

EndSub

PrivateSubCommandButton2_Click()

TextBoxl.Value=

Labell.Caption=

UserForml.Hide

EndSub

PrivateSubUserForm_Initialize()’程序执行时首先运行窗体初始化过程

DimaAsString

a=ActiveCell.Address(0,0),返回相对地址,承豆掌数U,1)是绝对地址

LaBell.Caption=„a+"的值是:一酶,标寥框的药暑担要重新廉

l£Selection=Then

TextBoxl.Value=»"'此时默认文本框可用,可执行点击命令按钮过程

Else

TextBoxl.Value=Selection

,TextBoxl.Enabled=False'若启用此句,则已有的数据不可更改

End1£

EndSub

2、自动填入时间的签到簿

要求在工作表A列中输入姓名后,会在B列自动输入签到日期和时间,如

图所示:

SlicrosoftExcel-Bookl

国文件(E)编辑@)视图笆)插入⑴格5

i一L田以433.£1

:宋体-12-LBIu

A5▼XV笈赵六

ABC

1

三2016-5-77:52:07签到

四2016-5-77:52:14签到

五2016-5-77:52:27签到

5赵六I

操作步骤:

在工作表Sheetl的代码窗口写下如下程序:

PrivateSubWorksheet__SelectionChange(ByValTargetAsRange)

IfTarget.Count=1Then,判断是否选中了单个单元格

IfTarget.Column=1Then,判断单元格是否在第一列

'Application.EnableEvents=False,禁止事件激活,可不要

Target.Offset(0^1)=Now&"签到",在相应行的第二列输入当前日期

1Application.EnableEvents=True'恢复事件激活,可不要

EndIf

EndIf

EndSub

★代码区中的Target可改为Selection更好理解;

★Target(或Selection)的.Column属性可改为.Columns.Column;

★整个过程体中可只保留“丁@啄1・0抵01(0,1)=1^0\¥&“签到””这一句。

运行时,工作表的Change事件被触发,会在B列自动输入签到日期和时间,

但修改工作表中其他列的单元格(如C列),工作表的Change事件同样会被触

发,但是因为不满足代码中的判断条件,所以不会执行写入日期的代码。代码中

写入值的地方是由Offset函数确定的,该函数是对源单元格(此处是Target这个

Range)的偏移量。

3、个性化的行和列

通过个性化的行和列辅助确认单元格内容。原始文件如图所示:

ABcDEFGH1JKLM

1民工格所在部门性?入职日期一季度角二季度均三季度每四季度名年度总《排名奖金

2R1001销售部男814/7/66155001563。22450998063560160

3R1002销售部女2010/6/231019250148701936。312208470081470

4R1003销售部男2010/8/110215001269023650154607330013330

5R1004销售部更812/7/15819&302245024780225108937051937

6R1005销售部女2013^/207二13002169026310201308943031943

7R1006治”男2012/6/2B8226002358022580221308890C2089

7

8R1007销售部男201V87159165401963029460二一三二870801708

0R1008销售部女2010/7712101250015880125602265063430170

10R1009销售部男2012/7/48989013210110201364047760200

11R1010销售部男2010/9/1291245011200236201478。62050180

12R1011销售部女2013/5/117294001945012410154607672011672

13R1012销售部男2012/471981963。2369013640324508941041941

14R1013圭销售部生#######102140028540286901020088830618B3

15R1014销售部女#######9227802641032010132609-146012446

16R1015销售部男2014/57296193601936022540114507271014271

17R1016销售部男2015/3/151326010200136402314060240190

18R1017销售部女2014/6/306185201542012540258007228015228

19R1018销售部女2014/3/256168301369。22140264307909010^09

20R1019销售部女2010/472810142g0147801745028460749B012498

21R1S。林运华|销售部女二。1174/179201301369018740294608202091202

该文件中已经隔行设置了格式,但还是不足以让我们快速分清数据。我们在

VBE中,双击“工程-VBAProject”窗口中的“Sheetl(原表)”选项,然后在弹出

的Sheetl代码窗口中点击“(通用)”的下拉列表框的下拉箭头,选择Worksheet

类型;此时原为“(声明)”的下拉列表框也自动改为SelectionShange事件,设置

好后程序会自动在代码窗口生成该事件的开头和结尾代码,如图所示:

工程・VBAP「ojectX

臼-延VBAProject(2一2.2不姓化的行而可.xlsx)

白…占MicrosoftExcel对象

〔Sheetl(原表)

…超)Thistforkbook

之2.2.2个性化的行和列.xlsx-Sheetl(代码)

Worksheet\/Select!onChange

PrivateSubWorksheet_SelectionChange(ByVaiTargetAsRange)

EndSub

S11

然后在Sheetl代码窗口中输入如下代码:

DimrAsInteger'也可以定义在下面的事件过程中,但要赋初值。,下同

DimcAsInteger

PrivateSubWorksheet_SelectionChange(ByValTargetAsRange)

OnErrorResumeNext'如果出现运行时错误,不要中断,继续运行

Application.Screenupdating=False’刷新,被禁用

Ifr=0Then

Range("Al:Z99").RowHeight=14.25,注1

Range("Al:Z99").Interior.Colorindex=xlNone'注2

EndIf

Ifc=0Then

Range("Al:Z99").Font.Italic=False

Range("Al:Z99").Font.Bold=False

Range("Al:Z99").Font.Colorindex=xlAutomatic

EndIf

IfSelection.Column>=1AndSelection.Column<=13Then

IfSelection.Row>=1AndSelection.Row<>rThen

Cells(r,1).EntireRow.RowHeight=14.25'整行,卜同

Cells(r,1).EntireRow.Interior.Colorindex=xlNone

r=Target.Row'注3

Cells(r?1).EntireRow.RowHeight=25

Cells(r,1).EntireRow.Interior.Colorindex=6

EndIf

EndIf

IfSelection.Column>=1AndSelection.Column<>cThen

Cells(l,c).Entirecolumn.Font.Italic=False,将列,下同

Cells(l,c).Entirecolumn.Font.Bold=False

Cells(l,c).Entirecolumn.Font.Colorindex=xlAutomatic

c=Target.Column

Cells(ljc).EntireColumn.Font.Italic=True

c).EntireColumn.Font.Bold=True

Cells(l,c).EntireColumn.Font.Colorindex=3

EndIf

Application.Screenupdating=True

EndSub

注1:当选择了新的单元格后,此程序在Z列以后、100行以下的格式(填

充色、字体等)未被重新设置到初始状态,可以拖动表格的滚动条去查看。要想

对整个表格都应用程序的设置(即未被选中的单元格所在行、列回到初始值),

需要将Range("Al:Z99")都改为"ActiveSheet.UsedRange”,但运行超慢!

注2:Interior是填充色,颜色用的是索引号,共56种,只需掌握前9种,

分别是:0为无色,1为白、2为黑,3〜5分别是红绿蓝,6〜8分别是黄(红绿混

色)紫(红蓝混色)青(绿蓝混色)。也可以用诸如vbGreen之类的VB颜色常

量,或直接使用RGB函数来精确控件颜色,不过属性要换成Color,而不是现在

的Colorindexo

注3:此处Target可换成Selection。其实本程序中,除了事件形参部分中的

uByValTargetAsRange"外,过程体中的Target与Selection均可互换。

程序解读:当发生WorksheetSelectionChange事件时:

第1步:先将r、c两个变量归0;

第2步:通过前两个IF结构,执行r(或c)为0时的操作,这其实是首次

运行时的操作,即:将选定的A1:Z99区域(或整个工作表)的填充色、行高、

字体设置等都设置为默认值。如果注释掉这两个IF结构,那么前一次选择单元

格后对相关行和列进行的格式运用将被保留下来,会造成多行、多列都显示了设

置后的效果;

第3步:通过两个嵌套的IF结构设置选中单元格所在行的格式,其中,外

层1F用于判断是否选中了有数据的单元格,只有A列到M列之间(即列号在

1〜13之间)的单元格被选中才进入到内层IF。这里可以测试:如果选中N列以

后的单元格,程序并不会改变本行的填充色,但选中100以后只要在M列以前

的单元格,还是会改变本行的填充色的。

进入内层IF,判断行号是否大于1并且不等于变量r的值(这里的例外又分

两种情况,要么r为0,要么r为上次的r值一一在r定义为全局变量的情况下

——这其实相当于这一次选择的单元格跟上一次选择的单元格在同一行),其实

这里的第二个判断条件(即r不等于变量r的值)在r、c定义在通用区时是必须

的,但若将r=0、c=0定义在事件过程内部时则是多余的,可以去掉“And

Selection.Roworv这个条件。(后面第4步对列的判断条件也是一样)

如果上述两个IF的条件都满足了(即不存在上述例外),那么,先对行号为

r(此处r要么为0,要么为上一次选择的单元格的行号)、列号为1的单元格所

在的整行进行格式重置为默认值的工作,例如你上次选的是C9,这次选的F4,

那么就将A9单元格所在的那一行,即第9行,上次已用的高亮格式(主要是行

高和填充色)重新改为默认值。不过,鉴于在第2步的两个IF结构中已经将上

一次操作后的痕迹都清除了,所以这两条语句其实是可以注释掉了。

接着,将当前行号(例如当前选中F4,行号就是4)赋给变量r。

最后,就是以r为行号、I为列号的单元格(即A4单元格)所在的整列应

用高亮显示的填充色和行高的属性值了。

总之,执行了第3步后,上一次选中的行失去了高亮显示,而本次选中的行

则被高亮显示了。

第4步:通过IF结构设置选中单元格所在列的格式,这里为什么不用嵌套

呢?也可以用,比如用"IfSelection.Row>=1AndSelection.Row<=21Then”来

判断是否是选择了1-21行(因为本例数据区只到21行)。其他设置的含义类似

于第3步,此处就不再赘述了。

第5步:为「防止可能的运行时错误,在第1步之前增加了容错代码,并禁

用了刷新,在第4步之后恢复了刷新。这三条语句可注释掉。

返回工作表,用鼠标选取数据区域的任意单元格,效果如图所示:

ABCDEFGH1JKLM.

1Q工编毛姓名听在部学另入职日期工龄一季彩二季度I三季度i四季度年度总徘名奖金

2R1001杨源军销售部男2014/7/6615500156302245099go63560160

3R1002柳愿销售部女2010/6/2310192501487019360312208470081470

4R1003刘卫中销售部男2010/8/110215001269023650154607330013330

5R1004张爱国销售部男2012/7/158196302245024780225108937051937

6R1005马羽销售部女2013/7/20721300216&026310201308043031&43

7R1006雷民销售部男2012/6/28822600235802258022130&08&02089

8R1007任正义销•部男201V8/159165401963029460214508708071708

9R1008但明玉销告部女2010/7/1210123001588012560226863430170

10R1009罗远浩销售部男2012/7/48989013210110201364047760200

11R1010马掘华销售部男2010/9/1291245011200236201478062050180

孔婉喑销售部女2013/5/11294001945012410154607672011672

12R10117

19630*

13R1012李光东销告部男2012/4/198'2369013640324508941041041

14R1013陈亦民销售部男2009/12/111021400285402869010200&883061883

15R1014何丽佳销售部女2010/10/229227802641032010132600446012446

16R1015于成南销售部男2014/5/296193601936022540114507271014271

17R1016刘恒非销售部男2015/3/151326010200136402314060240190

18R1017杨韬销售部女2014/6/306185201542012540258007228015228

19R1018王飞15销售部女2014/3/25616830136902214026430790W)10&09

20R1019曾东方销售部女2010/4/281014290147B017450284607498012498

21R1020陈运华销售部女2011/4/179201301369018740294608202091202

4、利用VBA设计一张可回收答案的课

程调查表

使用控件收集学生对课程和老师的反馈,并通过代码将反馈意见存储到反馈

结果中。要求:“调查表”的界面如图所示:

填写调查内容并点击“提交”后,将弹出MsgBox,同时会清空“调查表”

中已填写的数据,如图所示:

ABCDEF

1学期教学情况调查表

2

31你的性别:

4C男C女

5

62你的年级MicrosoftExcelX

7

8

93你的专业谢谢你参与调查!

10

11

124最喜欢的课程

13厂高数

14厂音乐欣赏确定

15

165你最喜欢的老师:

176建议:

18

19

20

21

22

23提交

OA

“反馈结果”表中已收集了“调查表”中提交的信息,如图所示:

ABCDEFGHI

序性在绵最言欢建议

号别年会号北高数数据分析体育音乐欣赏数据库专it课的老师隆•*

3,1男2019级商务★★★★张爱国多点时间上课

操作步骤:

①在“调查表”中进行如下设置,如图所示:

EFGHIKLM

C女2016级男女

2017级

2018

2019

:r体育

「专业课

②设置各控件,主要是其关联的单元格,其中:

▼选性别用的两个单选按钮链接到K4单元格;

▼选年级用的组合框链接到K5单元格;

▼选专业用的组合框链接到K6单元格;

▼选课程用的6个复选框链接到K7〜K12单元格;

③设置各控件的返回内容,其中:

▼在H4单元格输入

=IF(K4,INDEX(L4:M4,K4),"")

说明:本来,在H4单元格中只需输入“=INDEX(L4:M4,K4)”即可达到目

的,但是将来程序清除了K列的数值后,将会在H4单元格留下“#VALUE!”这

样的错误提示!所以在INDEX函数外面再套上一个IF函数,使得将来K4单元

格无值时,H4单元格不要显示出错信息。下同。

▼在H5单元格输入"”;

=IF(K5,INDEX(J4:J7,K5),"")

▼在H6单元格输入

=IF(K6,INDEX(J8:J12,K6),"")

▼在H7单元格输入

=IF(K7,

并一直填充到H12单元格。

经过上述①〜③步操作后,可以达到如图所示的效果,可以看出前三步的操

作主要是在调查表页面通过操作控件把需要的值放在合适的单元格里(在本例中

就是把通过选择类控件得到的结果全部都放在H列的几个单元格中),以备后面

的VBA代码读取:

„C_____DEFHIJKLM

学期教学情况调查表

向另「女2016级1男女

2019级2017级4

商务2018级1

|201搬▼2019级TRUE

商务TRUE

信管

会计

★经济TRUE

果程★国贸TRUE

V商敷厂数据分析厂体育

_r看乐欣赏厂数据隼v专业课

的老师:张爱国

EW|

④在VBE中的sheetI模块中输入如卜一代码:

OptionExplicit

PrivateSubCommandButton1_Click()

DimnAsInteger

WithWorksheets,'反馈结果”)

n=.[A1].CurrentRegion.Rows.Count+1

Cells(n,nAn).Value=.Cells(n-1,nA").Value+1

Cells(n,nBn).Resize(l,10).Value=Application._

WorksheetFunction.Transpose([H4:H12].Value)

Cells(n,nKH).Value=[D16].Value

Cells(n,nLn).Value=[Bl8].Value

Union([D16],[B18:E21],[K4:K12]).ClearContents

MsgBox”谢谢你参与调查!”

EndWith

EndSub

这组代码主要用于将已经在前三步操作中放到指定位置的值进行读取、计算

并显示在第二张表“反馈结果”中,其中用来给整形变量n赋值的表达式中,

u.[A1].CurrentRegion.Rows.Countn即指第二张表("反馈结果”表)中A1单元

格向右及向下连续有数据单元格的总行数,其间不能有空行或数据在横向或纵向

有间断。本例中,刚开始时这个数字为2(即A1是合并了两行),将这个2再加

1

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论