標題:
[發問]
大量複選表單的程式碼如何簡潔的操作?
[打印本頁]
作者:
starry1314
時間:
2016-12-20 16:27
標題:
大量複選表單的程式碼如何簡潔的操作?
請問這種該如何可以較簡潔呢?
我原本的寫法是 要輸出的資料寫在程式碼裡面
但因品項上百種,變成一種寫一次 程式碼很長.....
[attach]26124[/attach]
[attach]26125[/attach]
作者:
Hsieh
時間:
2016-12-21 15:51
回復
1#
starry1314
試試看是這樣的意思嗎?
[attach]26130[/attach]
作者:
starry1314
時間:
2016-12-21 17:20
本帖最後由 starry1314 於 2016-12-21 17:40 編輯
回復
2#
Hsieh
完美.......
竟然有可以依條件自動建立核取方塊....
比我原本一個一個建立的好多了
另想再問一下,目前選完之後在點選第二次可以將上次勾選的項目顯示已勾選嗎?
舊有方式 是開啟在讀取一次
CheckBox1.Value = IIf(.Range("C100") = "牛、", True, False)
作者:
Hsieh
時間:
2016-12-22 08:45
回復
3#
starry1314
原設計在按下確定後輸入資料前會將原寫入資料清除然後填入目前勾選項目
至於您所提到第二次勾選的重複問題,不確定你的工作流程想法
現以檢查勾選項目是否存在於工作表內作判斷,提出重複勾選警告
由輸入者自行決定是否重複輸入,資料將繼續增加
請參考附件
[attach]26162[/attach]
作者:
starry1314
時間:
2016-12-22 18:32
回復
4#
Hsieh
抱歉,說明的不夠詳細
流程是一筆訂單 填入選項之後
會做二度甚至三度更改,故須讓之前所選過的選項顯示已勾選,
才能讓修改人的確認之前選過什麼或是針對其中一項做取消,
填入的資料就都以最後一次點選的欄位,就不陸續新增了
作者:
c_c_lai
時間:
2016-12-23 05:57
本帖最後由 c_c_lai 於 2016-12-23 07:11 編輯
回復
3#
starry1314
#2 資料不變,只需再增加一個按鈕就行了:
[attach]26167[/attach]
Private Sub CommandButton3_Click() ' 比對選用資料
Dim ct As Variant
With MultiPage1.Pages(0)
For Each ct In .Controls
If Sheets("選用資料").Columns("B:B").Find(ct.Caption, lookat:=xlWhole) Is Nothing Then
ct.Object.Value = False
Else
ct.Object.Value = True
End If
Next
End With
End Sub
複製代碼
作者:
Hsieh
時間:
2016-12-23 16:12
回復
5#
starry1314
選用資料工作表只儲存1張訂單?
將程序改為開啟表單時同時讀取材料是否已經選用,自動將已存在選用資料工作表的項目勾選顯示
[attach]26175[/attach]
作者:
starry1314
時間:
2016-12-25 09:35
回復
6#
c_c_lai
感謝幫助,因為要讓使用者方便操作,都是以最快速為主~
改為開啟即自動按下比對,更方便使用者了
作者:
starry1314
時間:
2016-12-25 09:35
回復
7#
Hsieh
感謝版大的幫忙~~~完美解決!!
:victory:
作者:
starry1314
時間:
2018-9-17 15:56
回復
7#
Hsieh
版大,
請問這表單該如何可以修改成依照[類型不同]分去對應表單的分頁呢?
如3個類型就會有三個分頁這樣
目前是分不同欄位 輸出兩次一樣程式碼
可以變成一隻程式碼搞定嗎?
Private Sub UserForm_Initialize()
Set d = CreateObject("Scripting.Dictionary")
Set e = CreateObject("Scripting.Dictionary")
Set f = CreateObject("Scripting.Dictionary")
With Sheets("資料庫")
For Each a In .Range(.[C2], .[C65536].End(xlUp))
d(a.Value) = Array(a.Offset(, -2).Value, a.Value, a.Offset(, 1).Value, a.Offset(, 2).Value)
Next
End With
For Each ky In d.keys
With Me.MultiPage1.Pages(0)
.Caption = "鮮炒時蔬"
With .Controls.Add("forms.checkbox.1")
.Top = s * 30
.Width = 100
.Height = 30
.Left = k * 100
.Caption = ky
.Value = Not Sheets("選用資料").Columns("B").Find(ky, lookat:=xlWhole) Is Nothing
End With
m = m + 1
s = (m) Mod 9
k = Int(m / 9)
End With
Next
'水果
m = 0
s = 0
k = 0
With Sheets("資料庫")
For Each a In .Range(.[E2], .[E65536].End(xlUp))
e(a.Value) = Array(a.Offset(, -2).Value, a.Value, a.Offset(, 1).Value, a.Offset(, 2).Value)
Next
End With
For Each ky In e.keys
With Me.MultiPage1.Pages(1)
.Caption = "水果"
With .Controls.Add("forms.checkbox.1")
.Top = s * 30
.Width = 100
.Height = 30
.Left = k * 100
.Caption = ky
.Value = Not Sheets("選用資料").Columns("B").Find(ky, lookat:=xlWhole) Is Nothing
End With
m = m + 1
s = (m) Mod 9
k = Int(m / 9)
End With
Next
End Sub
複製代碼
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)