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

分享

Excel VBA 學(xué)習(xí)總結(jié)

 Excel實(shí)用知識(shí) 2021-11-21

  對于多行多列數(shù)據(jù),基本使用Worksheet中的Range就可以處理了,。但是在UserForm類型的應(yīng)用中,,也時(shí)常需要處理多行多列的數(shù)據(jù)。在UserForm中,,顯示和處理多列數(shù)據(jù),,通常可以有的選擇有以下幾種:DataGrid,,ListView,,ListBox。前面兩類相當(dāng)強(qiáng)大,,但是也比較復(fù)雜,,一般的簡單應(yīng)用中用不到。

DataGrid

  DataGrid控件天生就是為了處理像Recordset這種數(shù)據(jù)而準(zhǔn)備的,,與它類似的數(shù)據(jù)控件(其它公司提供的數(shù)據(jù)控件)也還有其它幾種,,這里并不是重點(diǎn),所以簡單介紹一下,。默認(rèn)情況下,,VBE中是看不到這個(gè)控件的,需要下載DATGDCHS.dll并放到C:\winnt\system32\下,,然后運(yùn)行命令“regsvr32 DATGDCHS.dll”注冊,。注冊完成后,選擇'Tools'菜單下的'Additional Controls...'菜單項(xiàng),,添加對應(yīng)的控件到工具箱中就可以了,。

  DataGrid最重要的屬性就是DataSource屬性,就是設(shè)置表格的數(shù)據(jù)源。其它的也可以設(shè)置列的一些屬性,,這里就不詳細(xì)介紹了,。需要的同學(xué)請自備Google并自行搜索。

ListView

  ListView也是處理這類型數(shù)據(jù)的一個(gè)選擇,,功能也比較強(qiáng)大,,特別是可以設(shè)置圖標(biāo),在很多時(shí)候還是很適合使用的,。下面的偽代碼介紹了常用的屬性和方法:

復(fù)制代碼
    Dim currentItem As ListItem
    
'清除listview1中的標(biāo)題
    ListView1.ColumnHeaders.Clear 
    
'清除listview1中的內(nèi)容
    ListView1.ListItems.Clear 

    
With Sheets(1)
        
'添加列標(biāo)題
        ListView1.ColumnHeaders.Add 1, , .Cells(11), ListView1.Width / 9 
        ListView1.ColumnHeaders.Add 
2, , .Cells(12), ListView1.Width / 9 
        
'顯示為報(bào)表視圖
        ListView1.View = lvwReport 
        
'選取整行
        ListView1.FullRowSelect = True
       
'復(fù)選框 
        ListView1.CheckBoxes = True 
        ListView1.BackColor 
= RGB(2551999
    
    
For i = 5 To .[A65536].End(xlUp).Row
        
'為listview1控件里面的行添加內(nèi)容
        Set currentItem = ListView1.ListItems.Add() 
            currentItem.Text 
= .Cells(i, 1'為行標(biāo)賦值
            currentItem.SubItems(1= .Cells(i, 2)
            currentItem.SubItems(
2= .Cells(i, 3)
            currentItem.SubItems(
3= .Cells(i, 4)

            
'為里面的第三列調(diào)整相應(yīng)的字體大小及顏色
             With currentItem.ListSubItems.Item(2
             
If .Text < 2 Then
                .ForeColor 
= RGB(25500
                
Else
                 .Bold 
= True 
                 .ForeColor 
= RGB(00255
             
End If
             
End With

    
Next i
    
End With
復(fù)制代碼

 默認(rèn)情況下,,ListView不會(huì)出現(xiàn)在工具箱中,需要在“Tools”菜單中,,點(diǎn)擊“Additional Controls...”菜單,,打開對話框,勾選“Microsoft ListView Control,,version 6.0”,,然后在工具箱中就可以使用了。

經(jīng)典的ListView雙擊列頭排序的方法如下(使用了'^'與'v'去標(biāo)示了排序的順序,,如果使用圖片的話也是可以的):

復(fù)制代碼
Private Sub lstAllocatonList_ColumnClick(ByVal columnHeader As MSComctlLib.columnHeader)
    SetSortMark columnHeader
    With lstAllocatonList
        
        If (columnHeader.Index - 1) = .SortKey Then
            .SortOrder = (.SortOrder + 1Mod 2
        Else
            .Sorted = False
            .SortOrder = 0
            .SortKey = columnHeader.Index - 1
            .Sorted = True
        End If
    End With
End Sub
Private Sub SetSortMark(columnHeader As MSComctlLib.columnHeader)
    Dim i As Integer
    Dim suffix As String
    suffix = IIf(Right(columnHeader.text, 2) = ' v'' ^'' v')
    
    With lstAllocatonList.ColumnHeaders
        For i = 1 To .Count
            .Item(i).text = Replace(.Item(i).text, ' ^''')
            .Item(i).text = Replace(.Item(i).text, ' v''')
        Next
    End With
    
    columnHeader.text = columnHeader.text + suffix
End Sub
 
復(fù)制代碼

ListBox

  雖然上面的兩種選擇很強(qiáng)大,,但是設(shè)置也比較復(fù)雜,而且在很多時(shí)候,,客戶并不允許去下載相關(guān)的控件,。而且在通常情況下,使用ListBox也可以達(dá)到相同的效果了,。所以ListBox是最常用的方式,,這里也重點(diǎn)介紹一下。使用ListBox常見的任務(wù)如下所示:

任務(wù)1:給ListBox綁定集合:

List - 代表所有行,,可以直接賦給一個(gè)集合,,也可以使用List(i,j)的形式給每個(gè)格賦值。

Column - 代表所有列,,可以直接賦給一個(gè)集合,,也可以使用Column (i,j)的形式給每個(gè)格賦值。

RowSource - 代表所有數(shù)據(jù),,可以直接賦給一個(gè)集合,。

注意給List賦值,行列都會(huì)按正常排列,,給Column賦值的時(shí)候,,行列會(huì)顛倒過來,一般需要使用Application.Transpose方法配合,。而RowSource需要一個(gè)字符串,,通??梢允褂肦ange的Address方法獲得,當(dāng)然直接給地址或者Range的Name也行,。下面是常見的賦值方式,,注意其中的格式:

復(fù)制代碼
'直接給RowSource賦值的形式
ListBox1.RowSource = '=Sheet1!A1:B5'

'直接使用數(shù)組的形式  
Dim arr(1 To 41 To 2As String
arr(
11= Cells(11)
'省略賦值的過程...
arr(42= Cells(42)

ListBox2.List 
= arr
ListBox3.Column 
= Application.WorksheetFunction.Transpose(arr)

'使用單元格的形式  
Dim source As Variant
'source = Range('A1:B4')
source = [A1:B4]
ListBox4.List 
= source
復(fù)制代碼

 任務(wù)2:編輯ListBox中的元素

AddItem - 添加一個(gè)新元素,參數(shù)是一個(gè)String,,如果是多列的話,,這個(gè)方法只會(huì)添加到第一列中,一般需要配合List(i,j)方法填充其他列的值,。

RemoveItem - 移除一個(gè)元素,,參數(shù)是一個(gè)Index值(從0開始),。

Clear - 清空ListBox,。

注意使用List(i,j),Column(j,i)的形式也可以獲得或設(shè)置給每一個(gè)格的值,,注意行列的Index都是從0開始的,。例如下面是對一個(gè)2列的列表操作:

復(fù)制代碼
'添加一行
ListBox1.AddItem TextBox1.Text
ListBox1.List(ListBox1.ListCount 
- 11= TextBox2.Text

'刪除選中行
If ListBox1.ListIndex <> -1 Then
  ListBox1.RemoveItem ListBox1.ListIndex
End If
 
'清空ListBox
ListBox1.Clear
復(fù)制代碼

任務(wù)3:獲取ListBox中行列的總數(shù)

ListCount - 行總數(shù),遍歷的時(shí)候很有用,。

ColumnCount - 獲取或設(shè)置列的數(shù)目,。

需要使用多列的時(shí)候,一般需要先設(shè)置ColumnCount為期望的數(shù)目,。

任務(wù)4:獲取ListBox中當(dāng)前選中的行列

ListIndex - 當(dāng)前選中的行的Index值,。如果是可以多選的話,這個(gè)值有可能不太可靠,,一般采用Selected遍歷整個(gè)集合來確定選中的行,。

Value - 當(dāng)前選中的行的值,如果是多列的話,,只返回第一列的值,。

Selected - 判斷某行是否被選中。

任務(wù)5:設(shè)置ListBox的表頭

這個(gè)問題,,常見的只有一種解法,,那就是使用RowSource綁定集合。

復(fù)制代碼
ListBox1.RowSource = Range('A2:B4').Address
復(fù)制代碼

這個(gè)時(shí)候A2上面一行的內(nèi)容會(huì)作為ListBox的表頭使用,。

基本使用上面這些屬性就可以達(dá)到顯示和處理多行多列數(shù)據(jù)的目的了,。 其它ListBox的屬性可以參看相關(guān)資料。

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

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多