標題:
[發問]
Excel inputbox 迴圈 問題
[打印本頁]
作者:
v03586
時間:
2015-9-18 07:45
標題:
Excel inputbox 迴圈 問題
因工作上一個小問題想寫成 程式去RUN
如圖所示
目前我寫的程式碼只能單筆輸入,然後每輸入完一筆會自動存檔
我想改寫成第一次點選跳出來的inputbox 只輸入工號
再來開始跳回圈 輸入MO
直到我按取消他就把我回圈輸入中的訊息自動帶出來,工號部分能自動填上嗎?
程式碼參考 請問如何修改成我圖說的那樣呢?
Sub 請輸入()
x = InputBox("請輸入收料OP工號 [ Please enter Operator ID ]", "請輸入收料OP工號 [Please enter Operator ID ]", "")
y = InputBox("請輸入MO, 輸入完畢請按取消鍵 [ Please enter MO ]", "請輸入MO [ Please enter MO ]", "")
Dim c1 As Integer
c1 = 2
While Cells(c1, 2) <> ""
c1 = c1 + 1
Wend
Cells(c1, 1) = x
Cells(c1, 2) = y
Cells(c1, 3) = Now()
ActiveWorkbook.Save
End Sub
複製代碼
[attach]22027[/attach]
作者:
stillfish00
時間:
2015-9-18 11:12
回復
1#
v03586
Sub 請輸入()
Dim x, y
x = InputBox("請輸入收料OP工號 [ Please enter Operator ID ]", "請輸入收料OP工號 [Please enter Operator ID ]", "")
If x = "" Then Exit Sub
Do
y = InputBox("請輸入MO, 輸入完畢請按取消鍵 [ Please enter MO ]", "請輸入MO [ Please enter MO ]", "")
If y = "" Then Exit Do
With Cells(Rows.Count, 1).End(xlUp)
.Cells(2, 1) = x
.Cells(2, 2) = y
.Cells(2, 3) = Now
End With
Loop
ActiveWorkbook.Save
End Sub
複製代碼
作者:
Joforn
時間:
2015-9-18 11:59
Sub 請輸入()
Dim X As Variant
Dim Y As Variant
Dim C1 As Integer
EnterID:
X = InputBox("請輸入收料OP工號 [ Please enter Operator ID ]", "請輸入收料OP工號 [Please enter Operator ID ]", "")
If X = False Then Exit Sub
EnterMo:
Y = InputBox("請輸入MO, 輸入完畢請按取消鍵 [ Please enter MO ]", "請輸入MO [ Please enter MO ]", "")
If Y = False Then
If MsgBox("你的輸入有誤,是否重新輸入一個MO?" & vbCrLf & _
"點擊""是""重新輸入,""否""退出當次輸入。", vbYesNo Or vbQuestion, "MO輸入錯誤") = vbYes Then GoTo EnterMo
Exit Sub
End If
C1 = 2
While Cells(C1, 2) <> ""
C1 = C1 + 1
Wend
Cells(C1, 1) = X
Cells(C1, 2) = Y
Cells(C1, 3) = Now()
ActiveWorkbook.Save
GoTo EnterID
End Sub
複製代碼
作者:
Joforn
時間:
2015-9-18 12:07
回復
1#
v03586
上面的代碼有誤,帖子不能編輯,重發一次代碼:
Sub 請輸入()
Dim X As String
Dim Y As String
Dim C1 As Long
EnterID:
X = InputBox("請輸入收料OP工號 [ Please enter Operator ID ]", "請輸入收料OP工號 [Please enter Operator ID ]")
If Len(X) < 1 Then Exit Sub
EnterMo:
Y = InputBox("請輸入MO, 輸入完畢請按取消鍵 [ Please enter MO ]", "請輸入MO [ Please enter MO ]", "")
If Len(Y) < 1 Then
If MsgBox("你的輸入有誤,是否重新輸入一個MO?" & vbCrLf & _
"點擊""是""重新輸入,""否""退出當次輸入。", vbYesNo Or vbQuestion, "MO輸入錯誤") = vbYes Then GoTo EnterMo
Exit Sub
End If
C1 = 2
While Cells(C1, 2) <> ""
C1 = C1 + 1
Wend
Cells(C1, 1) = X
Cells(C1, 2) = Y
Cells(C1, 3) = Now()
ActiveWorkbook.Save
GoTo EnterID
End Sub
複製代碼
作者:
准提部林
時間:
2015-9-18 15:49
參考:
1.使用者按〔取消〕即結束
2.若未輸入而按〔Enter〕或〔確定〕,仍維持在待命輸入狀態!
Sub 輸入()
Dim xR As Range, X, Y, T$, N%
Set xR = Cells(Rows.Count, 2).End(xlUp)(2, 0)
T = "請輸入收料OP工號 [ Please enter Operator ID ]"
Do: X = InputBox(T, T)
If StrPtr(X) = 0 Then Exit Sub '使用者按〔取消〕跳出
Loop Until X <> ""
T = "請輸入MO [ Please enter MO ]"
Do: Y = InputBox(T & ",輸入完畢請按取消鍵", T)
If StrPtr(Y) = 0 Then GoTo 999 '使用者按〔取消〕結束
If Y <> "" Then
xR.Resize(1, 3) = Array(X, Y, Now)
Set xR = xR(2, 1): N = N + 1
End If
Loop
999: If N > 0 Then ThisWorkbook.Save
End Sub
複製代碼
作者:
v03586
時間:
2015-9-18 19:35
回復
2#
stillfish00
謝謝大大的指教!程式碼OK :D 感謝解決我一個大問題~
作者:
v03586
時間:
2015-9-18 19:37
回復
4#
Joforn
感謝大大的分想~但他迴圈還是會出現輸入工號,我理想的設計是讓我的操作員,輸入工號第一次就好,其他就刷條碼,這樣對操作原來說 比較不用一直輸入工號,降低作業時的失誤率,但還是感謝您的分享,讓我也見識到不同的程式語法唷!!! :D
作者:
v03586
時間:
2015-9-18 19:47
回復
5#
准提部林
感謝板大的程式碼!有像防呆的功能還不賴耶!!!!沒有取消就在待命 讚 :)
作者:
v03586
時間:
2015-9-24 10:34
回復
5#
准提部林
請問一下版大,如果我要加一行資料自動三個月自動刪除可以嗎?
資料表上再輸入時的時間往後判斷三個月
作者:
准提部林
時間:
2015-9-24 12:57
回復
9#
v03586
基本原則:
與本帖主題需求不同,宜另開新帖!
另.所謂的〔三個月〕如何概定?要說得更清楚,最好舉實例!
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)