久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

VBA常用代碼解析(第二十七講)

 wdmexcel 2015-09-14

106 多個(gè)文本框數(shù)據(jù)相加

在▲102 中,,我們?cè)?/span>TextBox1TextBox2中輸入完數(shù)據(jù)后,,利用文本框的Change事件使TextBox3顯示其兩者相乘的金額,,但是如果窗體中有多個(gè)文本框,需要在每一個(gè)文本框的Change事件中寫(xiě)上相同的重復(fù)代碼,,因此使用類模塊可以簡(jiǎn)化代碼,。

在附件的窗體有七個(gè)文本框,其中六個(gè)用來(lái)輸入數(shù)據(jù),,一個(gè)用來(lái)顯示其他六個(gè)文本框相加后的合計(jì)數(shù),,首先打開(kāi)VBE,插入一個(gè)類模塊建立一個(gè)類,,類模塊的名字就是類的名字修改為“cmds”,,在類模塊中輸入下面的代碼:

Public WithEvents cmdAs MSForms.TextBox

代碼解析:

使用Public語(yǔ)句聲明變量cmd是用來(lái)響應(yīng)由TextBox對(duì)象觸發(fā)的事件的對(duì)象變量。

在窗體的Initialize事件中寫(xiě)入下面的代碼:

Dim col As New Collection

Private Sub UserForm_Initialize()

Dimi As Integer

Dimmyc As cmds

Fori = 1 To 6

Set myc = New cmds

Set myc.cmd = Me.Controls('TextBox'& i)

col.Add myc

Next

Setmyc = Nothing

End Sub

代碼解析:

1行代碼在模塊頂部聲明變量col的類型為集合,。

5行到第9行代碼,,將窗體中的六個(gè)文本框賦給col集合。

在類模塊中寫(xiě)入下面的代碼:

Private Sub cmd_Change()

Dimi As Integer

DimDval As Double

Fori = 1 To 6

Dval = Dval + Val(UserForm1.Controls('TextBox'& i))

UserForm1.TextBox7.Value = Dval

Next

End Sub

代碼解析:

窗體中的六個(gè)文本框統(tǒng)一的Change事件,,當(dāng)任何一個(gè)文本框中的數(shù)據(jù)發(fā)生變化時(shí),,所有文本框相加的合計(jì)數(shù)顯示在最后一個(gè)文本框中。

運(yùn)行窗體在文本框中輸入數(shù)據(jù)結(jié)果,。

107 控件跟隨活動(dòng)單元格

在工作表中使用控件時(shí)一般都把控件放在工作表的上部,,如果工作表中數(shù)據(jù)較多,當(dāng)頁(yè)面滾動(dòng)到工作表下面的區(qū)域時(shí),,控件會(huì)離開(kāi)當(dāng)前可視區(qū)域,,這時(shí)操作起來(lái)很不方便。解決方法除了凍結(jié)工作表的第一行放置控件的外,,還可以使控件出現(xiàn)在選定的單元格位置,,如下面的代碼所示,。

Private Sub Worksheet_SelectionChange(ByVal TargetAs Range)

WithMe.CommandButton1

.Top = Target.Top

.Left = Target.Left + Target.Width

EndWith

End Sub

代碼解析:

工作表的SelectionChange事件,使工作表中的按鈕控件出現(xiàn)在選定單元格的右邊,。

3行代碼,,設(shè)置按鈕的Top屬性等于選定單元格的Top屬性。Top屬性設(shè)置對(duì)象頂端到第一行頂端的距離,。

4行代碼,,設(shè)置按鈕的Left屬性等于選定單元格的Left屬性加上選定單元格的寬度,即按鈕出現(xiàn)在選定單元格的右邊,。Left屬性設(shè)置對(duì)象左邊界至 A 列左邊界的距離,。

當(dāng)單擊工作表區(qū)域的任一單元格,按鈕出現(xiàn)在單元格的右邊,。

108 高亮顯示按鈕

為了達(dá)到當(dāng)鼠標(biāo)掠過(guò)按鈕時(shí)以高亮和凸起顯示按鈕的效果,,可以在窗體和按鈕的MouseMove事件中進(jìn)行模擬,如下面的代碼所示,。

Private Sub CommandButton1_MouseMove(ByVal ButtonAs Integer,,ByVal Shift As IntegerByVal X As Single,,ByVal Y As Single)

WithMe.CommandButton1

.BackColor = &HFFFF00

.Width = 62

.Height = 62

.Top = 69

.Left = 31

EndWith

End Sub

Private Sub UserForm_MouseMove(ByVal Button AsIntegerByVal Shift As Integer,,ByVal X As Single,,ByVal Y As Single)

WithMe.CommandButton1

.BackColor = Me.BackColor

.Width = 60

.Height = 60

.Top = 70

.Left = 32

EndWith

End Sub

代碼解析:

窗體和按鈕的MouseMove事件過(guò)程,以高亮和凸起顯示按鈕,。

當(dāng)用戶在窗體中移動(dòng)鼠標(biāo)時(shí),,分別在窗體和按鈕的MouseMove事件設(shè)置按鈕的BackColor屬性值,指定按鈕的背景色,,當(dāng)鼠標(biāo)移動(dòng)到按鈕時(shí)以高亮顯示,,當(dāng)鼠標(biāo)移動(dòng)到窗體時(shí)恢復(fù)原來(lái)的設(shè)置。接下來(lái)分別設(shè)置按鈕不同的Width屬性,、Height屬性,、Top屬性和Left屬性值,以模擬按鈕凸起的效果,。

109 組合框和列表框添加列表項(xiàng)的方法

組合框和列表框是Excel中最常用的控件,,可以用來(lái)顯示工作表中的數(shù)據(jù)。為組合框和列表框添加列表項(xiàng)的方法有多種,,下面以列表框?yàn)槔菔咎砑恿斜眄?xiàng)的方法,。

109-1 使用RowSource屬性添加列表項(xiàng)

使用RowSource屬性將列表框直接與工作表上的一個(gè)單元格區(qū)域相鏈接,如下面的代碼所示,。

Private Sub UserForm_Initialize()

DimiRow As Integer

iRow= Sheet1.Range('A65536').End(xlUp).Row

Me.ListBox1.RowSource= 'sheet1!a1:a' & iRow

End Sub

代碼解析:

在窗體初始化時(shí)使用RowSource屬性為列表框添加列表項(xiàng),。

RowSource屬性的語(yǔ)法如下:

object.RowSource [=String]

參數(shù)object是必需的,,一個(gè)有效的對(duì)象。

參數(shù)String是可選的,,組合框或列表框列表的來(lái)源,。

RowSource屬性也可以使用單元格地址,第4行代碼可以改成下面的代碼:

Me.ListBox1.RowSource= Sheet1.Range('A1:A' & iRow).Address(External:=True)

需要注意的是,,如果RowSource屬性指定的工作表區(qū)域不是活動(dòng)工作表的話,,Address屬性的External參數(shù)是不可缺的,設(shè)置為True表示是外部引用,,如果缺省此參數(shù)或?yàn)?/span>False,,將不能為列表框添加列表項(xiàng)。

RowSource屬性還可以使用命名的單元格區(qū)域,,如果已把工作表區(qū)域命名為“城市”,,第4行代碼可以改成下面的代碼:

Me.ListBox1.RowSource= '城市'

對(duì)于工作表中的列表框控件或使用窗體添加的列表框控件不能使用RowSource屬性,需要使用ListFillRange屬性指定填充列表框的工作表區(qū)域,,如下面的代碼所示,。

Sub ListFillRange()

DimiRow As Integer

iRow= Sheet1.Range('A65536').End(xlUp).Row

Sheet2.ListBox1.ListFillRange= 'Sheet1!a1:a' & iRow

Sheet2.Shapes('列表框').ControlFormat.ListFillRange = 'Sheet1!a1:a'& iRow

End Sub

代碼解析:

ListFillRange過(guò)程為工作表中的列表框的填充區(qū)域,ListFillRange屬性用于指定填充列表框的工作表區(qū)域,。

對(duì)于使用窗體添加的列表框控件需要使用ControlFormat屬性來(lái)返回窗體控件以后才能設(shè)置其ListFillRange屬性,。

109-2 使用List屬性添加列表項(xiàng)

使用List屬性為列表框添加列表項(xiàng),如下面的代碼所示,。

Private Sub UserForm_Initialize()

DimArr As Variant

DimiRow As Integer

iRow= Sheet1.Range('A65536').End(xlUp).Row

Arr= Sheet1.Range('A1:A' & iRow)

Me.ListBox1.List= Arr

End Sub

代碼解析:

在窗體初始化時(shí)使用List屬性為列表框添加列表項(xiàng),。

List屬性的語(yǔ)法如下:

object.List( rowcolumn ) [= Variant]

參數(shù)object是必需的,,一個(gè)有效對(duì)象,。

參數(shù)row是必需的,取值范圍為 0 到列表?xiàng)l目數(shù)減 1 之間的數(shù)值,。

參數(shù)column是必需的,,取值范圍為 0 到總列數(shù)減 1 之間的數(shù)值。

參數(shù)Variant是可選的,,列表框中指定條目的內(nèi)容,。

6行代碼,使用List屬性把數(shù)組復(fù)制到列表框控件上,。

除了使用數(shù)組外,,List屬性還可以使用命名的單元格區(qū)域,如果已把工作表區(qū)域命名為“城市”,,可以改成下面的代碼:

Private Sub UserForm_Initialize()

Me.ComboBox1.List= Range('城市').Value

End Sub對(duì)于工作表中使用窗體添加的列表框控件使用List屬性添加列表項(xiàng),,如下面的代碼所示。

Sub List()

DimArr As Variant

DimiRow As Integer

DimmyObj As Object

iRow= Sheet1.Range('A65536').End(xlUp).Row

Arr= Sheet1.Range('A1:A' & iRow)

SetmyObj = Sheet2.Shapes('列表框 10').ControlFormat

myObj.List= Arr

End Sub

代碼解析:

List過(guò)程設(shè)置列表框的List性,,用于指定填充列表框的工作表區(qū)域,。


    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn),。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多