VBA 當2個條件一樣時,自動尋找輸入 3 程式修改
- 帖子
- 2848
- 主題
- 10
- 精華
- 0
- 積分
- 2903
- 點名
- 0
- 作業系統
- 〔略〕
- 軟體版本
- 〔略〕
- 閱讀權限
- 100
- 性別
- 男
- 來自
- 〔略〕
- 註冊時間
- 2013-5-13
- 最後登錄
- 2026-7-25
|
在工作表表格直接輸入及操作不是更方便???
用表單覺得反而礙手~~ |
|
|
|
|
|
|
|
- 帖子
- 2848
- 主題
- 10
- 精華
- 0
- 積分
- 2903
- 點名
- 0
- 作業系統
- 〔略〕
- 軟體版本
- 〔略〕
- 閱讀權限
- 100
- 性別
- 男
- 來自
- 〔略〕
- 註冊時間
- 2013-5-13
- 最後登錄
- 2026-7-25
|
車輛編號 及 司機人員 的組合都固定不重覆???
試試~~
Dim vD As Object
Private Sub CommandButton1_Click()
Dim T$, T1$, T2$, R&
T1 = TextBox1: T2 = TextBox2: T = T1 & "|" & T2
If T1 = "" Then MsgBox "你必須輸入 (車輛編號) ": Exit Sub
If T2 = "" Then MsgBox "你必須輸入 (司機人員) ": Exit Sub
R = Val(vD(T))
If R = 0 Then MsgBox "車輛/司機:" & T1 & "/" & T2 & ",這組合不存在 ": Exit Sub
If R < 0 Then '出車
Cells(-R, 3).Resize(1, 4) = ""
Cells(-R, 4) = Now: ComboBox1.Text = ""
vD(T) = -R
Else '回車
If ComboBox1.Text = "" Then MsgBox "這是【回車】趟,(回車物品) 必須輸入 ": Exit Sub
Cells(R, 3) = T2: Cells(R, 5) = Now: Cells(R, 6) = ComboBox1.Text
vD(T) = -R
End If
End Sub
Private Sub UserForm_Initialize()
Dim T$, T1$, T2$, i&
Set vD = CreateObject("Scripting.Dictionary")
Arr = Range([F1], [A65536].End(xlUp))
For i = 2 To UBound(Arr)
T1 = Arr(i, 1): T2 = Arr(i, 2): T = T1 & "|" & T2
If T1 = "" Or T2 = "" Then GoTo 101
vD(T) = i
If Arr(i, 4) = "" Or Arr(i, 5) <> "" Then vD(T) = -i
101: Next i
ComboBox1.List = Array("NO", "Yes")
End Sub
111_v1.rar (30.02 KB)
|
|
|
|
|
|
|
|
- 帖子
- 2848
- 主題
- 10
- 精華
- 0
- 積分
- 2903
- 點名
- 0
- 作業系統
- 〔略〕
- 軟體版本
- 〔略〕
- 閱讀權限
- 100
- 性別
- 男
- 來自
- 〔略〕
- 註冊時間
- 2013-5-13
- 最後登錄
- 2026-7-25
|
本帖最後由 准提部林 於 2018-12-6 17:32 編輯
回復 11# man65boy
1) 假使途中把工作表內的資料其中一列,刪除時,再次使用表單輸入時,也要把新的資料,填補在那一列
__是指[清除]吧! 列變成空白, 而不是整列刪除???
__所以, 新的資料要從中間有空白的列優先填補, 沒有中間空白列了, 才從最後一列下面空白列填寫???
__要新寫入的資料與被刪除的沒有對應關係???
2) 己有[回車]時間的列, 不再對其做任何處理??? (表示該工作已完成)
3) 只有[出車]時間者, 等[回車]時, 只要填入__人員(2)/回車時間/物品???
4) 新增[出車]時, 只填入__車輛/人員(1)/出車時間??? |
|
|
|
|
|
|
|
- 帖子
- 2848
- 主題
- 10
- 精華
- 0
- 積分
- 2903
- 點名
- 0
- 作業系統
- 〔略〕
- 軟體版本
- 〔略〕
- 閱讀權限
- 100
- 性別
- 男
- 來自
- 〔略〕
- 註冊時間
- 2013-5-13
- 最後登錄
- 2026-7-25
|
回復 11# man65boy
Dim vD As Object
Private Sub CommandButton1_Click()
Dim T$, T1$, T2$, R&
T1 = TextBox1: T2 = TextBox2: T = T1 & "|" & T2
If T1 = "" Then MsgBox "你必須輸入 (車輛編號) ": Exit Sub
If T2 = "" Then MsgBox "你必須輸入 (司機人員) ": Exit Sub
R = Val(vD(T))
If R = 0 Then '出車
R = [A:A].Find(What:="", LookAt:=xlWhole, SearchOrder:=xlByColumns, SearchDirection:=xlNext).Row
Cells(R, 1) = T1: Cells(R, 2) = T2: Cells(R, 4) = Now
vD(T) = R
Else '回車
If ComboBox1.Text = "" Then MsgBox "這是【回車】趟,(回車物品) 必須輸入 ": Exit Sub
Cells(R, 3) = T2: Cells(R, 5) = Now: Cells(R, 6) = ComboBox1.Text
vD(T) = 0
End If
TextBox1 = "": TextBox1.SetFocus: TextBox2 = "": ComboBox1 = ""
End Sub
Private Sub UserForm_Initialize()
Dim T$, T1$, T2$, i&, Arr
Set vD = CreateObject("Scripting.Dictionary")
Arr = Range([F1], [A65536].End(xlUp))
For i = 2 To UBound(Arr)
T1 = Arr(i, 1): T2 = Arr(i, 2): T = T1 & "|" & T2
If T1 <> "" And T2 <> "" And Arr(i, 3) = "" Then vD(T) = i
Next i
ComboBox1.List = Array("NO", "Yes")
End Sub
111_v2.rar (27.91 KB)
|
|
|
|
|
|
|
|