[Excel VBA]ListView和真偽亂數的應用_Pickup

因應業務需求,簡易做一個pickup的VBA介面程式,供使用者易於操作。

撰寫該程式過程中,個人認為有兩個重點,分別為ListView視窗指令和VBA中的真偽亂數(Randomize and Rnd),一併紀錄,也供分享。

a. ListView

ListView指令源自於VB,因此須借重VB和網路資料進行效果測試,而無法在VBA中的help查詢到完整的指令用法。

對於ListView的顯示設定,可由下列代碼段來設定,其中可利用ColumnHeaders對第一欄位和第二欄位的標頭做名稱、欄位寬度和對齊等等視窗效果定義,利用二八比例,視窗效果即如封面圖。

    ListView1.ListItems.Clear               '清空列表
    ListView1.ColumnHeaders.Clear           '清空表頭
    ListView1.Gridlines = True              '顯示格線
    ListView1.View = lvwReport              '報表格式
    ListView1.FullRowSelect = True          '可選擇欄位
    ListView1.ColumnHeaders.Add 1, , "No.", ListView1.Width * 0.2, lvwColumnLeft '定義第一欄位
    ListView1.ColumnHeaders.Add 2, , "Name", ListView1.Width * 0.8, lvwColumnLeft '定義第二欄位

另外,針對pickup程式的需求,在ListView視窗中需條列原姓名的序號,因此分別利用i和k兩個整數變量來定義,其中i代表原名單的序號,k代表pickup record list視窗中的順序,如封面圖和下列代碼段所示。

Dim i as integer
Dim k as integer    
k = ListView1.ListItems.Count + 1
ListView1.ListItems.Add.Text = tep.Range("A" & i).Value
ListView1.ListItems(k).SubItems(1) = TB_express.Text

b. 真偽亂數

加入checkbox作為是否重複挑選的選項,同時用Rnd指令作為隨機抽取,然而以Rnd作為隨機產出有bug, 需要再加上Randomize來改變起始亂數。真偽亂數的認知來自於該篇文章,同時也自行撰寫程式碼來驗證結果,可主動調整數列序號和增刪Randomize,詳情可仔細拜讀該篇文章。

Sub ra()
Dim i As Integer

    For i = 1 To 10
        Randomize
        Cells(i, 1) = Rnd()
    Next i

End Sub

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值