电竞比分网-中国电竞赛事及体育赛事平台

分享

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(0,108,72108,27)

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方法創(chuàng)建一個Microsoft Excel控件,返回一個Shape對象,該對象代表新建的控件,語法如下:

expression.AddFormControl(Type,Left,TopWidth,Height)

參數expression是必需的,一個有效的對象。

參數Type是必需的,MicrosoftExcel控件類型,可以為表格所列XlFormControl 常量之一。

參數Left是必需的,新對象的初始坐標(以磅為單位)相對于工作表 A1 單元格的左上角或圖表的左上角。

參數Top是必需的,新對象的初始坐標(以磅為單位)相對于工作表 A1 單元格的左上角或圖表的左上角。

參數Width是必需的,以磅為單位的新對象的初始大小。

參數Height是必需的,以磅為單位的新對象的初始大小。

7行代碼將新添加的按鈕名稱設置為“myButton”。

8行到第12行代碼設置新添加的按鈕文字設置為“新建的按鈕”,并設置文字的大小和顏色。

13行代碼,指定新添加按鈕所執(zhí)行的宏名稱。

myButton過程是單擊新添加按鈕所執(zhí)行的過程,顯示一個消息框。

運行AddFormControls過程將在工作表中添加一個命令按鈕,單擊按鈕顯示一個消息框。

128-2 使用Add方法

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

Sub AddChartObjects()

DimmyButton As Button

On ErrorResume Next

Sheet1.Shapes('myButton').Delete

SetmyButton = Sheet1.Buttons.Add(108,72,108,27)

WithmyButton

.Name = 'myButton'

.Font.Size = 12

.Font.ColorIndex = 5

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

.OnAction = 'myButton'

EndWith

End Sub

Sub myButton()

MsgBox'這是使用Add方法新建的按鈕!'

End Sub

代碼解析:

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

3、4行代碼為了避免在工作表中重復添加按鈕控件,先刪除工作表中的“myButton”按鈕。

5行代碼,使用Add方法在工作表中添加命令按鈕控件,Add方法適用于ChartObjects對象的語法如下:

expression.Add(Left,Top,Width,Height)

參數expression是必需的,該表達式返回一個ChartObjects對象。

如果需要在工作表中添加其他窗體控件,可以將參數expression設置為表格所示的ChartObjects對象之一。

參數LeftTop是必需的,以磅為單位給出新對象的初始坐標,該坐標是相對于工作表上單元格 A1 的左上角或圖表的左上角的坐標。

參數Width和參數Height是必需的,以磅為單位給出新對象的初始大小。

7行代碼將新添加的按鈕的名稱設置為“myButton”。

8行到第10代碼新添加的按鈕的文字設置為“新建的按鈕”并設置文字的大小和顏色。

11行代碼,指定新添加命令按鈕所執(zhí)行的宏名稱。

myButton過程是單擊新添加按鈕所執(zhí)行的過程,顯示一個消息框。

運行AddChartObjects過程將在工作表中添加一個命令按鈕,單擊按鈕顯示一個消息框。

129 在工作表中添加ActiveX控件

128 中使用代碼在工作表中添加的是窗體控件,而本例中使用代碼在工作表中添加的是ActiveX控件,兩者是有區(qū)別的,在工作表中前者是使用窗體對話框添加,而后者是使用控件工具箱添加。

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:=108,Top:=72,Width:=108,Height:=27)

WithObj

.Name = 'MyButton'

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

.Object.Font.Size = 16

.Object.ForeColor = &HFF&

EndWith

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

If .Lines(1,1) <> 'Option Explicit' Then

.InsertLines 1,'Option Explicit'

End If

If .Lines(2,1) = '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控件中的命令按鈕和相應的代碼。

3、4行代碼為了避免在工作表中重復添加按鈕控件,先刪除工作表中的名稱為“myButton”的按鈕。

56行代碼,使用Add方法在向工作表中添加ActiveX控件中的命令按鈕,Add方法應用于OLEObjects 對象的語法如下:

expression.Add(ClassType,FileName,LinkDisplayAsIcon,IconFileName,IconIndex,IconLabel,LeftTop,WidthHeight)

其中參數expression是必需的,返回一個 OLEObjects 對象。

參數ClassType是可選的,創(chuàng)建的對象的程序標識符。如果指定了 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:=72,Width:=108Height:=27)

ShpBut.Name = 'MyButton'

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

If .Lines(1,1) <> 'Option Explicit' Then

.InsertLines 1'Option Explicit'

End If

If .Lines(2,1) = 'Private Sub MyButton_Click()' Then ExitSub

.InsertLines 2'Private Sub MyButton_Click()'

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

.InsertLines 4,'End Sub'

EndWith

End Sub

代碼解析:

AddShapes過程使用AddOLEObject方法在向工作表中添加ActiveX控件中的命令按鈕和相應的代碼。

5、6行代碼,使用AddOLEObject方法在向工作表中添加ActiveX控件中的命令按鈕,AddOLEObject方法創(chuàng)建OLE對象,語法如下:

expression.AddOLEObject(ClassType,FileNameLink,DisplayAsIcon,IconFileName,IconIndex,IconLabelLeft,TopWidth,Height)

AddOLEObject方法參數與Add方法類似,請參閱▲129-1。

運行AddShapes過程,將在工作表中添加一個命令按鈕和相應的代碼,單擊按鈕顯示一個消息框。

130


    本站是提供個人知識管理的網絡存儲空間,所有內容均由用戶發(fā)布,不代表本站觀點。請注意甄別內容中的聯系方式、誘導購買等信息,謹防詐騙。如發(fā)現有害或侵權內容,請點擊一鍵舉報。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多