小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

VBA【代碼】ListView控件自動(dòng)調(diào)整列寬,自動(dòng)調(diào)整控件寬度,自動(dòng)調(diào)整用戶窗體寬度,標(biāo)簽控件居中顯示

 冷茶視界 2024-04-14 發(fā)布于江蘇

實(shí)用案例

|日期控件||簡單的收發(fā)存||收費(fèi)管理系(Access改進(jìn)版)|

|電子發(fā)票管理助手||電子發(fā)票登記系統(tǒng)(Access版)|

|文件合并||表格拆分||審計(jì)憑證抽查底稿|

|中醫(yī)診所收費(fèi)系統(tǒng)(Excel版)||中醫(yī)診所收費(fèi)系統(tǒng)(Access版)||銀行對賬單自動(dòng)勾對|

|印章使用登記系統(tǒng)|

收費(fèi)使用項(xiàng)目

|財(cái)務(wù)管理系統(tǒng)||工資薪金和年終獎(jiǎng)個(gè)稅籌劃||新稅法下工資表模版|

內(nèi)容提要

  • ListView自動(dòng)列寬|完整代碼

1、在工作表“Sheet1”里,命令按鈕點(diǎn)擊事件,顯示用戶窗體UserForm1:

Private Sub CmdShowUserForm_Click()    UserForm1.ShowEnd Sub
2、在myModule 里,自動(dòng)設(shè)置ListView列寬過程,有3個(gè)選項(xiàng),代碼中均有注釋,根據(jù)實(shí)際情況選擇:
Private Declare PtrSafe Function SendMessage Lib "user32" _    Alias "SendMessageA" ( _    ByVal hwnd As LongPtr, _    ByVal wMsg As LongPtr, _    ByVal wParam As LongPtr, _    ByVal lParam As LongPtr) As LongPtrPrivate Const LVM_FIRST As LongPtr = &H1000Private Const LVM_SETCOLUMNWIDTH As LongPtr = LVM_FIRST + 30Private Const LVSCW_AUTOSIZE As LongPtr = -1Private Const LVSCW_AUTOSIZE_USEHEADER As LongPtr = -2
Sub AutoResizeListViewColumn(lv As ListView, Optional AutoSizeType As Integer = 1) '函數(shù)用于自動(dòng)調(diào)整ListView列寬 With lv If AutoSizeType = 1 Then '//根據(jù)標(biāo)題與內(nèi)容寬度調(diào)整,均完整顯示,最適合列寬 SendMessage .hwnd, LVM_SETCOLUMNWIDTH, .ColumnHeaders.Count - 1, ByVal LVSCW_AUTOSIZE_USEHEADER For i = 0 To .ColumnHeaders.Count - 2 SendMessage .hwnd, LVM_SETCOLUMNWIDTH, i, ByVal LVSCW_AUTOSIZE_USEHEADER Next ElseIf AutoSizeType = 2 Then '//根據(jù)標(biāo)題與內(nèi)容寬度調(diào)整,均完整顯示,如果所有列寬之和小于ListView的寬度,最后一列占有剩余寬度 For i = 0 To .ColumnHeaders.Count - 1 SendMessage .hwnd, LVM_SETCOLUMNWIDTH, i, ByVal LVSCW_AUTOSIZE_USEHEADER Next Else '//根據(jù)內(nèi)容寬度調(diào)整,標(biāo)題有可能不完全顯示 For i = 0 To .ColumnHeaders.Count - 1 SendMessage .hwnd, LVM_SETCOLUMNWIDTH, i, ByVal LVSCW_AUTOSIZE Next End If End WithEnd Sub
3、在UserForm1里,用戶窗體Activate事件,給ListView添加表頭、內(nèi)容,根據(jù)Checkbox1(自動(dòng)列寬)的值,確定是否調(diào)用自動(dòng)列寬過程,最后,根據(jù)ListView的寬度,調(diào)整用戶窗體的寬度,再根據(jù)用戶窗體的寬度,調(diào)整標(biāo)題標(biāo)簽位置始終居中
Private Sub UserForm_Activate()    Dim LvItem As ListItem    Dim ws As Worksheet    Dim ckb As OLEObject    Dim iWidth As Single        '//設(shè)置ListView    With Me.LvDetail                '//ListView的基本設(shè)置        .View = lvwReport 'listview控件的顯示外觀,需要自動(dòng)調(diào)整列寬的,此項(xiàng)為必須        .Gridlines = True        .Sorted = False        .CheckBoxes = True        .LabelEdit = lvwManual                '//添加表頭        .FullRowSelect = True        For i = 1 To 6            .ColumnHeaders.Add , , "標(biāo)題" & i, 80        Next                '//添加內(nèi)容        For i = 1 To 10            Set LvItem = .ListItems.Add            LvItem.Text = i            For j = 1 To 5                LvItem.SubItems(j) = "內(nèi)容" & Space(j * 2) & j + 1            Next        Next    End With        '//根據(jù)checkBox的值決定是否自動(dòng)列寬    Set ws = ThisWorkbook.Sheets("Sheet1")    Set ckb = ws.OLEObjects("CheckBox1")    If ckb.Object.Value = True Then        Call AutoResizeListViewColumn(LvDetail, 1)        'Call AutoResizeListViewColumn(LvDetail, 2)        'Call AutoResizeListViewColumn(LvDetail, 3)    End If        '//調(diào)整ListView的寬度與窗體的寬度    With Me.LvDetail    '//計(jì)算總寬度        For i = 1 To .ColumnHeaders.Count            iWidth = iWidth + .ColumnHeaders(i).Width        Next        .Width = iWidth + 5                '//根據(jù)ListView的寬度調(diào)整窗體的寬度        Me.Width = .Left + .Width + 20                '//調(diào)整標(biāo)題標(biāo)簽位置,始終居中        Me.Label1.Left = (Me.Width - Me.Label1.Width) / 2    End WithEnd Sub

~~~~~~End~~~~~~

    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多