VBA Excel 實踐(二)Excel窗體事件、方法及Excel窗體屬性

引言

本人本次實踐的目標是數據查詢。具體實現方式應該是:

  1. 使用窗體及其他控件做查詢的條件的輸入
  2. 使用excel作爲查詢結果的輸出
  3. 從桌面上看應該是,前面一個窗口輸入查詢條件,然後點確定,後面有個excel顯示結果。
  4. 類似下圖這種

    

一、打開窗口 

窗體俗稱對話框,在可視化的面向對象的編程軟件中都應該有。在VBA中也有,可以打開 excel->開發工具

點開Visual Basic就會進入到變成界面,然後就可以插入窗體,如下圖 

二、窗體簡介

 窗體,也就是窗口,或者叫對話框,是vba定義的一個對象,或者說一類對象。微軟對“Microsoft 窗體”對象的介紹就是下面一幅圖

我們本節所說的”窗體“就是第二層(UserForm)。我們可以從圖中看出,窗體對象,不止是指UserForm,還指其他的對象,如Controls,Font,MultiPage,等等。從面向對象的觀點來說,這個圖表示的應該是一個繼承圖。(我不是很熟,猜的) 如果上圖是個繼承關係圖,那麼我們可以得到幾個結論:

  1. 他們的事件可以繼承
  2. 他們的屬性也可以繼承
  3. 且兒子的屬性和事件可能比父親多。。。。

三、窗體屬性簡介

屬性,表示這個窗體固有的特性,如基本的:長寬高,位置,顏色等;特殊的:如字體大小啊,有無滾動條啊等等

所以分下類:

  • 基礎屬性:外觀,位置,字體
名稱 窗體名稱 該窗體的標識 可能是唯一標識

BackColor

背景色    

BorderColor

邊框顏色   只有BorderStyle爲1時,這個纔有效

BorderStyle

邊框類型(兩種)

0 fmBorderStyleNone

fmBorderStyleSingle

 

Caption

窗體左上角顯示的名字    

Height

窗體顯示位置-高    

Width

窗體顯示位置-寬    

 

 

 

 

 

 

 

 

  •  行爲屬性

Cycle

tab順序指定控件接收焦點的順序

0 fmCycleAllForms

2 fmCycleCurrentForm

選0時,使用tab鍵,會遍歷所有的該窗體範圍內所有的控件;選1時,使用tab鍵,只會遍歷某一窗體範圍內的控件,tab不會跳出範圍,到最後一個控件後會在回到該窗體範圍的第一個控件
showmodal 窗口是否鎖死(這個詞合適)

true

false

選true叫模態,false叫非模態

模態下,如果這個窗口是激活的,其他窗體或窗口則不能被選中。非模態,反之。

 

 

 

 

 

 

  • 滾動條

ScrollBars

滾動條

0 fmScrollBarsNone

1 fmScrollBarsHorizontal

2 fmScrollBarsVertical

3 fmScrollBarsBoth

0 無

1 水平

2 垂直

3 全部

ScrollHeight

ScrollTop

滾動條高 height有值,top才填值 只有當ScrollHeight值大於窗體本身的height時,滾動條纔會顯示。這個時候Top表示滾動條離頂部的距離

ScrollWidth

ScrollLeft

滾動條寬 width有值,left才能填值 只有當ScrollWidth值大於,窗體本身的Width時,滾動條纔會顯示。這個時候left表示滾動條離左側的距離

 

 

 

 

 

 

 

 

 四、窗體事件、方法簡介

  •  常用事件

Initialize

就是在初始化窗口時,要對窗口乾的事情,比如給窗口屬性賦值,給窗體內包含的控件賦初始值。

Click

點擊窗體時,會幹的事情,比如隱藏窗體等等

Terminate

關閉窗體是要乾的事情,比如保存文件,關閉excel等

  • 怎麼弄出來事件呢?

先在左邊選中窗口(對象),右邊基本上都是事件。。。每個對象能響應的事件可能是不一樣多的

  • 常用方法

move,copy等等呢

  • 怎麼弄出來方法呢?

跟你寫代碼一樣,寫出這個對象在.一下,後面跟的就是方法和屬性

一般黑色表示屬性,綠色標識方法。

五、Initalize 、click事件示例

下列示例假設程序中已有兩個窗體UserForms。在 UserForm1 的Initalize事件中加載 UserForm2 ,並將其顯示出來。當用戶單擊 UserForm2 時,就會將其隱含起來,而 UserForm1 將會出現。而當用戶單擊 UserForm1 時,UserForm2 便會再次出現。

'這是 UserForm1 的 Initialize 事件過程
Private Sub UserForm_Initialize()
    Load UserForm2
    UserForm2.Show
End Sub
'這是 UserForm2 的 Click 事件過程
Private Sub UserForm_Click()
    UserForm2.Hide
End Sub

' 這是 UserForm1 的 Click 事件
Private Sub UserForm_Click()
    UserForm2.Show
End Sub

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章