分享

VBA常用代码解析(第三十四讲)

 wdmexcel 2015-09-23

127 播放Flash文件

如果需要在工作表中播放Flash文件,那么可以使用ShockwaveFlash控件。

步骤1,在工作表中单击菜单“视图”→“工具栏”→“控件工具箱”→“其他控件”,选择“ShocKwave Flash Object”后在工作表中拖动添加ShockwaveFlash控件。

如果“其他控件”中没有该控件,请参阅▲126 对其进行注册,ShockwaveFlash控件的文件名为Flash9d.OCX

步骤2,在设计模式下右键单击ShockwaveFlash控件,选择“属性”,设置ShockwaveFlash控件的Base属性和Movie属性为Flash文件所在的路径,设置Embedmovie属性为True,使Flash文件嵌入到Excel中。

可以使用代码设置ShockwaveFlash控件的各项属性,如下面的代码所示。

Private Sub Workbook_Open()

WithSheet1.ShockwaveFlash1

.Base = ThisWorkbook.Path & '\face.swf'

.Movie = ThisWorkbook.Path &'\face.swf'

.EmbedMovie = True

EndWith

End Sub

代码解析:

工作簿打开时将ShockwaveFlash控件的Base属性和Movie属性设置为同一目录中的“face.swf”文件,设置Embedmovie属性为True

退出设计模式后,将在工作表中显示Flash动画。

128 在工作表中添加窗体控件

在工作表中添加窗体控件,除了使用手工添加外,还可以使用代码添加,方法如下:

128-1 使用AddFormControl方法

使用AddFormControl方法在工作表中添加窗体控件,如下面的代码所示。

Sub AddFormControls()

DimmyShape As Shape

On ErrorResume Next

Sheet1.Shapes('myButton').Delete

SetmyShape = Sheet1.Shapes.AddFormControl(01087210827)

WithmyShape

.Name = 'myButton'

With .TextFrame.Characters

.Font.ColorIndex = 3

.Font.Size = 12

.Text = '新建的按钮'

End With

.OnAction = 'myButton'

EndWith

End Sub

Sub myButton()

MsgBox'这是使用AddFormControl方法新建的按钮!'

End Sub

代码解析:

AddFormControls过程使用AddFormControl方法在工作表中添加窗体控件。

34行代码为了避免在工作表中重复添加按钮控件,先删除工作表中的“myButton”按钮。

5行代码,使用AddFormControl方法在工作表中添加命令按钮控件并设置控件的坐标和大小。应用于Shapes对象的AddFormContl方法创建一个Microsoft Excel控件,返回一个Shape对象,该对象代表新建的控件,语法如下:

expression.AddFormControl(TypeLeftTopWidthHeight)

参数expression是必需的,一个有效的对象。

参数Type是必需的,MicrosoftExcel控件类型,可以为表格所列XlFormControl 常量之一。

参数Left是必需的,新对象的初始坐标(以磅为单位)相对于工作表 A1 单元格的左上角或图表的左上角。

参数Top是必需的,新对象的初始坐标(以磅为单位)相对于工作表 A1 单元格的左上角或图表的左上角。

参数Width是必需的,以磅为单位的新对象的初始大小。

参数Height是必需的,以磅为单位的新对象的初始大小。

7行代码将新添加的按钮名称设置为“myButton”。

8行到第12行代码设置新添加的按钮文字设置为“新建的按钮”,并设置文字的大小和颜色。

13行代码,指定新添加按钮所执行的宏名称。

myButton过程是单击新添加按钮所执行的过程,显示一个消息框。

运行AddFormControls过程将在工作表中添加一个命令按钮,单击按钮显示一个消息框。

128-2 使用Add方法

在工作表中添加窗体控件还可以使用Add方法,如下面的代码所示。

Sub AddChartObjects()

DimmyButton As Button

On ErrorResume Next

Sheet1.Shapes('myButton').Delete

SetmyButton = Sheet1.Buttons.Add(1087210827)

WithmyButton

.Name = 'myButton'

.Font.Size = 12

.Font.ColorIndex = 5

.Characters.Text = '新建的按钮'

.OnAction = 'myButton'

EndWith

End Sub

Sub myButton()

MsgBox'这是使用Add方法新建的按钮!'

End Sub

代码解析:

AddChartObjects过程使用Add方法在工作表中添加窗体控件。

34行代码为了避免在工作表中重复添加按钮控件,先删除工作表中的“myButton”按钮。

5行代码,使用Add方法在工作表中添加命令按钮控件,Add方法适用于ChartObjects对象的语法如下:

expression.Add(LeftTopWidthHeight)

参数expression是必需的,该表达式返回一个ChartObjects对象。

如果需要在工作表中添加其他窗体控件,可以将参数expression设置为表格所示的ChartObjects对象之一。

参数LeftTop是必需的,以磅为单位给出新对象的初始坐标,该坐标是相对于工作表上单元格 A1 的左上角或图表的左上角的坐标。

参数Width和参数Height是必需的,以磅为单位给出新对象的初始大小。

7行代码将新添加的按钮的名称设置为“myButton”。

8行到第10代码新添加的按钮的文字设置为“新建的按钮”并设置文字的大小和颜色。

11行代码,指定新添加命令按钮所执行的宏名称。

myButton过程是单击新添加按钮所执行的过程,显示一个消息框。

运行AddChartObjects过程将在工作表中添加一个命令按钮,单击按钮显示一个消息框。

129 在工作表中添加ActiveX控件

128 中使用代码在工作表中添加的是窗体控件,而本例中使用代码在工作表中添加的是ActiveX控件,两者是有区别的,在工作表中前者是使用窗体对话框添加,而后者是使用控件工具箱添加。

129-1 使用Add方法

使用Add方法在工作表中添加ActiveX控件,如下面的代码所示。

Sub AddObj()

DimObj As New OLEObject

On ErrorResume Next

Sheet1.OLEObjects('MyButton').Delete

SetObj = Sheet1.OLEObjects.Add(ClassType:='Forms.CommandButton.1'_

Left:=108Top:=72Width:=108Height:=27)

WithObj

.Name = 'MyButton'

.Object.Caption = '新建的按钮'

.Object.Font.Size = 16

.Object.ForeColor = &HFF&

EndWith

WithActiveWorkbook.VBProject.VBComponents(Sheet1.CodeName).CodeModule

If .Lines(11) <> 'Option Explicit' Then

.InsertLines 1'Option Explicit'

End If

If .Lines(21) = 'Private Sub MyButton_Click()' Then ExitSub

.InsertLines 2'Private Sub MyButton_Click()'

.InsertLines 3vbTab & 'MsgBox ““这是使用Add方法新建的按钮!”“'

.InsertLines 4'End Sub'

EndWith

End Sub

代码解析:

AddOLEObject过程使用Add方法在向工作表中添加ActiveX控件中的命令按钮和相应的代码。

34行代码为了避免在工作表中重复添加按钮控件,先删除工作表中的名称为“myButton”的按钮。

56行代码,使用Add方法在向工作表中添加ActiveX控件中的命令按钮,Add方法应用于OLEObjects 对象的语法如下:

expression.Add(ClassTypeFileNameLinkDisplayAsIconIconFileNameIconIndexIconLabelLeftTopWidthHeight)

其中参数expression是必需的,返回一个 OLEObjects 对象。

参数ClassType是可选的,创建的对象的程序标识符。如果指定了 ClassType参数,则忽略FileName参数和Link参数。

在本例中指定添加控件的程序标识符为“Forms.CommandButton.1,即命令按钮控件,关于对象的程序标识符请参阅▲119-3

参数Left和参数Top是必需的,以磅为单位给出新对象的初始坐标,该坐标是相对于工作表上单元格 A1 的左上角或图表的左上角的坐标。

参数Width和参数Height是可选的,以磅为单位给出OLE对象的初始大小。

8行代码,设置命令按钮的名称为“MyButton”。

9行代码,设置命令按钮的文字为“新建的按钮”

10行代码,设置命令按钮的文字的大小。

11行代码,设置命令按钮的文字的颜色。

13行到第21行代码,在工作表中写入新添加的命令按钮的单击事件代码。

ActiveX控件不能像窗体控件用OnAction属性来指定宏,需要使用CodeModule对象的InsertLines方法在工作表中插入代码。

应用于CodeModule对象的InsertLines方法的语法如下:

object.InsertLines(linecode)

参数object是必需的,一个有效的对象。

参数line是必需的,用来指定要插入代码的位置。

参数code是必需的,要插入的代码。

14行到第16行代码判断首行内容是否为要求变量声明,如不是则添加要求变量声明语句。

17行到第20行代码判断是否已存在相同名称的过程,如不存在则使用InsertLines方法在工作表中插入代码。

运行AddOLEObject过程,将在工作表中添加一个命令按钮和相应的代码,单击按钮显示一个消息框。

129-2 使用AddOLEObject方法

在工作表中添加ActiveX控件,还可以使用AddOLEObject方法,如下面的代码所示。

Sub AddShapes()

DimShpBut As Shape

On ErrorResume Next

Sheet1.OLEObjects('MyButton').Delete

SetShpBut = Sheet1.Shapes.AddOLEObject(ClassType:='Forms.CommandButton.1'_

Left:=108Top:=72Width:=108Height:=27)

ShpBut.Name = 'MyButton'

WithActiveWorkbook.VBProject.VBComponents(Sheet1.CodeName).CodeModule

If .Lines(11) <> 'Option Explicit' Then

.InsertLines 1'Option Explicit'

End If

If .Lines(21) = 'Private Sub MyButton_Click()' Then ExitSub

.InsertLines 2'Private Sub MyButton_Click()'

.InsertLines 3vbTab & 'MsgBox ““这是使用AddOLEObject方法新建的按钮!”“'

.InsertLines 4'End Sub'

EndWith

End Sub

代码解析:

AddShapes过程使用AddOLEObject方法在向工作表中添加ActiveX控件中的命令按钮和相应的代码。

56行代码,使用AddOLEObject方法在向工作表中添加ActiveX控件中的命令按钮,AddOLEObject方法创建OLE对象,语法如下:

expression.AddOLEObject(ClassTypeFileNameLinkDisplayAsIconIconFileNameIconIndexIconLabelLeftTopWidthHeight)

AddOLEObject方法参数与Add方法类似,请参阅▲129-1

运行AddShapes过程,将在工作表中添加一个命令按钮和相应的代码,单击按钮显示一个消息框。

130


    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多