Board logo

標題: 如何讓inputbox 連續產生 [打印本頁]

作者: kerochen    時間: 2015-10-4 09:48     標題: 如何讓inputbox 連續產生

各路神人,小弟現有一困擾,就是當在核對書名時排上架時(擺放清單),總是要剪剪貼貼。所以想用excel 寫一個迴圈程式,讓店長能直接輸入數字後,能對應到表格剪下來,產生另一份的擺放清單。但不知要怎麼讓inputbox 能有連續輸入的功能,及當輸入到特定值時能自動關掉。煩請指導了,謝謝

dim n as page
st = application.inputbox("數字", type:=1)
for each n in page("A2"A50")
if n.value=st then
range(Cells(st+1,"A"),Cells(st+1,"B")).select
(已選上的拷貝到sheet(2), 貼上(假設有文字的話跳到下一行) '這段不會寫
msgbox"已選上   " & Cells(st+1,"B").text

else
if st=0
msgbox"已完成選項"

end if
next
作者: koo    時間: 2015-10-4 18:45

要不要改用TextBox試試

有資料就換下一列
Ax = Sheets(2).[A65536].End(xlUp).Row + 1
Rows(n.Row).Copy Sheets(2).Cells(Ax, 1)
作者: kerochen    時間: 2015-10-4 19:35

回復 2# koo

謝謝,我待會試看看. 但更大的問題是在連續輸入…
作者: 准提部林    時間: 2015-10-4 20:50

本帖最後由 准提部林 於 2015-10-6 14:34 編輯

沒檔案,只能猜,請自行去套:
  1. Sub Find_No()
  2. Dim ST, xF As Range
  3. Do
  4.  ST = InputBox("數字")
  5.  If StrPtr(ST) = 0 Then Exit Do '按〔取消〕跳出
  6.  If ST = "000" Then Exit Do '輸入〔特定值〕跳出
  7.  If ST <> "" Then
  8.    Set xF = [書本清冊!A2:A50].Find(ST, Lookat:=xlWhole)
  9.    If xF Is Nothing Then
  10.      MsgBox "找不到編號,請重新輸入! "
  11.    Else
  12.      xF.Resize(1, 2).Copy [擺放清單!A65536].End(xlUp)(2)
  13.      Beep
  14.    End If
  15.  End If
  16. Loop
  17. End Sub
複製代碼

作者: koo    時間: 2015-10-5 02:59

連續輸入也可以用call自己
  1. Sub test()
  2. Dim a As Integer
  3. a = InputBox("請輸入編號", "輸入")
  4. If a = 3 Then Exit Sub    ''輸入3離開
  5. Cells([A65536].End(xlUp).Row + 1, 1) = a   ''下一列開始輸入
  6. Call test
  7. End Sub
複製代碼

作者: kerochen    時間: 2015-10-5 22:43

回復 4# 准提部林

Hi 准大, 我今天測試了, 要修改下列二個即可使用. 感謝.
只是會有當出現inputbox時,本身的取消無法離開, 要輸入0 or 000 即可跳出. 非常謝謝.


Sub Find_No()
Dim ST, xF As Range
Do
 ST = InputBox("數字")
 If ST = 0 Then Exit Do '按〔取消〕跳出
 If ST = "000" Then Exit Do '輸入〔特定值〕跳出
 If ST <> "" Then
   Set xF = [書本清冊!A2:A50].Find(ST, Lookat:=xlWhole)
   If xF Is Nothing Then
     MsgBox "找不到編號,請重新輸入! "
   Else
     xF.Resize(1, 2).Copy [擺放清單!A65536].End(xlUp)(2)
     Beep
   End If
 end If
Loop
End Sub
作者: 准提部林    時間: 2015-10-6 09:37

本帖最後由 准提部林 於 2015-10-6 09:39 編輯

回復 8# kerochen


If StrPtr(ST) = 0 Then Exit Do '按〔取消〕跳出
您的版本無法使用嗎?
作者: stillfish00    時間: 2015-10-6 09:37

回復 8# kerochen
StrPtr 是未公開的 function , 有問題可以改用
If ST = "" Then Exit Do   '按〔取消〕跳出
作者: kerochen    時間: 2015-10-6 21:01

回復 8# 准提部林

是的= =. 還是謝謝准大. !
作者: kerochen    時間: 2015-10-6 21:02

回復 8# stillfish00

感謝!!  Still fish, 我明天上班試看看.
作者: 准提部林    時間: 2015-10-6 22:29

本帖最後由 准提部林 於 2015-10-6 22:31 編輯

If ST = "" Then Exit Do 未輸入,按〔Enter〕或〔確定〕仍然會跳出,

因此要分辨是按〔取消〕?還是〔未輸入〕?
另個方式:
  1. Sub Find_No()
  2. Dim ST, xF As Range
  3. Do
  4.  ST = Application.InputBox("數字")
  5.  If ST & "" = "False" Then Exit Do '按〔取消〕跳出
  6.  If ST = "000" Then Exit Do '輸入〔特定值〕跳出
  7.  If ST <> "" Then
  8.    Set xF = [書本清冊!A2:A50].Find(ST, Lookat:=xlWhole)
  9.    If xF Is Nothing Then
  10.      MsgBox "找不到編號,請重新輸入! "
  11.    Else
  12.      xF.Resize(1, 2).Copy [擺放清單!A65536].End(xlUp)(2)
  13.      Beep
  14.    End If
  15.  End If
  16. Loop
  17. End Sub
複製代碼
未輸入而按確定或Enter,輸入介面仍維持待輸入狀態!! 
作者: kerochen    時間: 2015-10-9 06:14

回復 11# 准提部林

Hi 准大, 這幾天較忙遲回了.  我大致上已修正完成. 用後續的程式二個都可以。只是習慣問題.  但這幾天我又在思考另一個問題.. 再麻煩淮大了.  感謝


(1) 能否一次選擇 從編號X 到編號N,  並做防呆如被選過的話就msgbox "X" 已被選過 or msgbox "沒這本書啦" (其它功能我造之前的寫即可.
作者: 准提部林    時間: 2015-10-9 10:21

回復 12# kerochen


能否一次選擇 從編號X 到編號N 

意思是類似:輸入〔10-12,18,22-24],連續處理〔10,11,12,18,22,23,24〕,
最好上傳檔案及模擬需求結果(因還檢測是否已選過)!
作者: kerochen    時間: 2015-10-9 18:35

回復 13# 准提部林

是的, 就是這個意思. 淮大. 我再傳上來. 謝謝
作者: 准提部林    時間: 2015-10-9 18:45

回復 14# kerochen

其實那個想法是有問題的:
1.中途找不到符合者,提示訊息後,中斷?或只提醒,按MSGBOX確定,繼續往下執行?
2.中途找到符合者,又已存在(即重覆選取),同上問題?
3.不管找到或找不到,可能是輸入時手誤,如何判斷?
4.當MSGBOX提示多個後,如何記住是哪些有錯誤?
5.當有錯誤,是否又要重來一次?

只是簡單的找對應,不如使用VLOOKUP,在工作表儲存格直接輸入,應更方便,也可檢錯!
作者: kerochen    時間: 2015-10-10 13:01

本帖最後由 kerochen 於 2015-10-10 13:03 編輯

回復 15# 准提部林

Hi 准大, 我個人的思考如下, 我看明天能不能上傳給你看一下. 你的思考是正確的, 當你使用連續輸入時就可能會產生你上述的情形, 所以 我現在的寫法是 當我選到要核對的row,  row. coloridex=27.  直接上底色.  表示有處理過了. 如選到重覆的就跳出.  這樣的寫法很單純. 但只能單筆單筆的敲. 但如過有1百多筆的話我就要敲1百多筆, 所以才產生我能不能大量的輸入? 假設"中途" 找不到符合、或"重覆"選上的, 我就跳msgbox. 不再go. 也不讓msgbox有記住什麼的功能.  講這些最重要的就是" 大量輸入"有他的風險(重覆、找不到、輸入錯誤) , 代價就是"中斷".  讓你費神了. 也謝謝你願意不斷教導我.  如你住台中的話 就直接請你出來海尼根了 XD

其實那個想法是有問題的:
1.中途找不到符合者,提示訊息後,中斷?或只提醒,按MSGBOX確定,繼續往下執行?
2.中途找到符合者,又已存在(即重覆選取),同上問題?
3.不管找到或找不到,可能是輸入時手誤,如何判斷?
4.當MSGBOX提示多個後,如何記住是哪些有錯誤?
5.當有錯誤,是否又要重來一次?




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)