- 帖子
- 5923
- 主題
- 13
- 精華
- 1
- 積分
- 5986
- 點名
- 0
- 作業系統
- win10
- 軟體版本
- Office 2010
- 閱讀權限
- 150
- 性別
- 男
- 來自
- 台灣基隆
- 註冊時間
- 2010-5-1
- 最後登錄
- 2022-1-23
        
|
2#
發表於 2013-7-13 09:35
| 只看該作者
回復 1# yliu
試試看- Private Const Sh = "DATA" 'Const 陳述式 宣告常數 , 其值如字面所示 ("DATA")
- Dim D As Object
- Private Sub UserForm_Initialize()
- Dim i As Integer
- Set D = CreateObject("Scripting.Dictionary")
- With ListBox1
- .ColumnCount = 4 '欗位數
- .ColumnWidths = "120 pt;80 pt;80 pt;80 pt" '設定欄寬
- End With
- With Sheets(Sh)
- i = 2
- Do While .Cells(i, "A") <> ""
- D(.Cells(i, "A").Value) = ""
- i = i + 1
- Loop
- End With
- With ComboBox1
- .List = D.KEYs
- .Value = .List(0)
- End With
- End Sub
- Private Sub ComboBox1_Change()
- Dim i As Integer, R As Integer
- ListBox1.Clear
- TextBox1 = ""
- TextBox2 = ""
- TextBox3 = ""
- Set D = CreateObject("Scripting.Dictionary")
- With Sheets(Sh)
- i = 2
- Do While .Cells(i, "A") <> ""
- If .Cells(i, "A") = ComboBox1 Then
- With ListBox1
- .AddItem
- R = .ListCount
- .List(R - 1, 0) = Sheets(Sh).Cells(i, "B") '單號+序號
- .List(R - 1, 1) = Sheets(Sh).Cells(i, "C") '品名
- .List(R - 1, 2) = Sheets(Sh).Cells(i, "D") '規格
- .List(R - 1, 3) = Sheets(Sh).Cells(i, "E") '金額
- End With
- End If
- i = i + 1
- Loop
- End With
- End Sub
- Private Sub ListBox1_Change() '將選取ListBox的值放到TextBox
- Dim Ar(1 To 3) As String, i As Integer
- For i = 0 To ListBox1.ListCount - 1
- If ListBox1.Selected(i) = True Then
- Ar(1) = IIf(Ar(1) = "", "", Ar(1) & vbTab) & ListBox1.List(i, 1) '品名
- Ar(2) = IIf(Ar(2) = "", "", Ar(2) & vbTab) & ListBox1.List(i, 2) '規格
- Ar(3) = Val(Ar(3)) + Val(ListBox1.List(i, 3)) '金額
- End If
- Next
- TextBox1 = Ar(1)
- TextBox2 = Ar(2)
- TextBox3 = Ar(3)
- End Sub
複製代碼 |
|