Board logo

標題: 小問題請高手幫忙看一下!! [打印本頁]

作者: samneng    時間: 2016-1-7 18:08     標題: 小問題請高手幫忙看一下!!

請問各位高手前輩們...小的目前試作工作管理表碰上兩個小問題..請幫忙看一下!..謝謝~~
[attach]23055[/attach]
[attach]23056[/attach]

1. 當使用"工作交接常日輸入表單"後利用ITEM搜尋 , 小的有設計若找不到相符合條件會出現對話框但無論如何是否相符合都會出現異常訊息 "無相符合的紀錄" , 但用LotNo搜尋則無此問題!~ 可否請各位高手前輩們幫忙看一下哪邊編寫有誤呢!?
  1. If Cells(2, 1) > ITEM.Value Then
  2. Else
  3. MsgBox "無找到相符合條件的紀錄!", vbExclamation, "錯誤"
複製代碼
2. 一樣使用"工作交接常日輸入表單"無論利用ITEM or LotNo搜尋到符合條件後可將Owner~備註欄位填到"工作交接事項"的對應欄位 , 由於小的無論編寫後總是有一種方式在新增紀錄後會跳至下一列 , 而非對應欄位~.. 請各位高手前輩們幫忙看一下!.. 謝謝~~
  1. '判斷資訊是否輸入完整
  2.     If Owner.Value = "" Or 回覆時間.Value = "" Or 回覆結果.Value = "" Or 回覆附件.Value = "" Or 備註.Value = "" _
  3.        Then
  4.        MsgBox "資訊輸入不完整,請重新輸入!", vbExclamation, "錯誤提示"
  5.         '退出執行程式
  6.        Exit Sub
  7.     End If
  8.    
  9.     If MsgBox("確認是否需修改", vbQuestion + vbYesNo, "詢問") = vbYes Then
  10.          nrow = Worksheets("工作交接事項").Range("A2:A65536").Find(ITEM.Value, lookat:=xlWhole).Row
  11.    
  12.     Else
  13.          nrow = Worksheets("工作交接事項").Columns(6).Find(LotNo.Value, lookat:=xlWhole).Row
  14.    
  15.     End If
  16.    
  17.     With Worksheets("工作交接事項")
  18.       
  19.         .Range(.Cells(nrow, 11), .Cells(nrow, 11)) = Owner.Value
  20.         .Range(.Cells(nrow, 12), .Cells(nrow, 12)) = 回覆時間.Value
  21.         .Range(.Cells(nrow, 13), .Cells(nrow, 13)) = 回覆結果.Value
  22.         .Range(.Cells(nrow, 14), .Cells(nrow, 14)) = 回覆附件.Value
  23.         .Range(.Cells(nrow, 15), .Cells(nrow, 15)) = 備註.Value
  24.         
  25.     End With
複製代碼

作者: c_c_lai    時間: 2016-1-8 07:55

回復 1# samneng
[一]
Private Sub CommandButton1_Click()
{1}
'宣告 a = 表單的ITEM
Set myRange = Range("工作交接事項").Columns(1).Find(a, lookat:=xlWhole)
a = UserForm3.ITEM.Text
修改成
'宣告 a = 表單的ITEM
a = UserForm3.ITEM.Text
Set myRange = Range("工作交接事項").Columns(1).Find(a, lookat:=xlWhole)
{2}
If Cells(2, 1) > ITEM.Value Then
修改成
If Not Rng Is Nothing Then

[二]
{1}
Private Sub CommandButton1_Click()
        LotNo.Value = "" '更改LotNo為未選擇狀態
{2}
Private Sub CommandButton3_Click()
    ITEM.Value = "" '更改LotNo為未選擇狀態
將它們移除,因為
    If MsgBox("確認是否需修改", vbQuestion + vbYesNo, "詢問") = vbYes Then
         nrow = Worksheets("工作交接事項").Range("A2:A65536").Find(ITEM.Value, lookat:=xlWhole).Row
    Else
         nrow = Worksheets("工作交接事項").Columns(6).Find(LotNo.Value, lookat:=xlWhole).Row
    End If
有語病。
作者: samneng    時間: 2016-1-8 08:51

謝謝c_c_lai 大大幫忙小的解決問題...!! 感激不盡~~
另外請教一下~ 小的已經重新試過~...但還是有小小的疑問懇請幫忙解答一下~...謝謝喔!!~

1. 由於小的還在試學Excel VBA有錯請再不吝指導...謝謝~
已經將ITEM按鈕的搜尋改為如下 , 不知是否有改錯! 另將Cells移除改為Rng但無論有否加Else , 只會出現兩種情形:
a. 無加Else無論有否相同條件都會出現錯誤訊息
b. 有加Else無論有否相同條件都"不會"出現錯誤訊息
小的怕是否誤解大大的意思... 是否懇請在幫忙看一下!... 謝謝~~
  1. '宣告 a = 表單的ITEM
  2. a = UserForm3.ITEM.Text
  3. Set myRange = Range("工作交接事項").Columns(1).Find(a, lookat:=xlWhole)

  4. If Not Rng Is Nothing Then
  5. Else
  6. MsgBox "無找到相符合條件的紀錄!", vbExclamation, "錯誤"
  7. End If
複製代碼
2. 小的加入LotNo.Value & ITEM.Value = "" '為未選擇狀態 , 是怕使用者誤解不知這會造成語病感謝指導!... 請教若搜尋ITEM時將LotNo控制項內容清空反之相同的話 , 請問小的要寫在哪裡才不會造成與病困擾呢!? ... 這兩項移除確認可編寫在同一欄位了! 謝謝大大指導~... 以上請在幫忙確認一下 ! 感激~
作者: samneng    時間: 2016-1-8 09:04

不好意思有關第2點小的後來試過發現如果為ITEM搜尋的"新增紀錄"可在同一列的欄位但若為LotNo搜尋的"新增紀錄"卻無法新增在同一列的欄位請教大大是否哪邊程式碼需要更改呢!... 麻煩了~謝謝!!
  1. Private Sub CommandButton2_Click()
  2.     '判斷資訊是否輸入完整
  3.     If Owner.Value = "" Or 回覆時間.Value = "" Or 回覆結果.Value = "" Or 回覆附件.Value = "" Or 備註.Value = "" _
  4.        Then
  5.        MsgBox "資訊輸入不完整,請重新輸入!", vbExclamation, "錯誤提示"
  6.         '退出執行程式
  7.        Exit Sub
  8.     End If
  9.    
  10.     If MsgBox("確認是否需修改", vbQuestion + vbYesNo, "詢問") = vbYes Then
  11.          nrow = Worksheets("工作交接事項").Range("A2:A65536").Find(ITEM.Value, lookat:=xlWhole).Row
  12.    
  13.     Else
  14.          nrow = Worksheets("工作交接事項").Columns(6).Find(LotNo.Value, lookat:=xlWhole).Row
  15.    
  16.     End If
  17.    
  18.     With Worksheets("工作交接事項")
  19.       
  20.         .Range(.Cells(nrow, 11), .Cells(nrow, 11)) = Owner.Value
  21.         .Range(.Cells(nrow, 12), .Cells(nrow, 12)) = 回覆時間.Value
  22.         .Range(.Cells(nrow, 13), .Cells(nrow, 13)) = 回覆結果.Value
  23.         .Range(.Cells(nrow, 14), .Cells(nrow, 14)) = 回覆附件.Value
  24.         .Range(.Cells(nrow, 15), .Cells(nrow, 15)) = 備註.Value
  25.         
  26.     End With
複製代碼

作者: c_c_lai    時間: 2016-1-8 09:16

回復 4# samneng
先請教你一個疑問 (在不去思考你程式下),為何有兩個修正選紐?
作者: samneng    時間: 2016-1-8 13:27

抱歉!.. 由於上班緣故晚回!..主要規劃項目如圖所示 :
[attach]23064[/attach]

小的後面有試過以下幾種 :
1. 若利用ITEM搜尋後"新增紀錄"可在同一列後續相關欄位無問題!
2. 若利用ITEM and LotNo搜尋後"新增紀錄"可在同一列後續相關欄位無問題!
3. 若單獨利用LotNo搜尋後"新增紀錄"無法在同一列後續相關欄位!

小的改由以下方式也似乎不行 .. 無論用Or / And都不行!..
主要是想利用雙搜尋的方式來找到正確的同一列資訊後 , 新增/修改在同一列的後續欄位上
再請大大幫忙確認一下是否哪邊編寫有誤呢!.. 謝謝~感激不盡!!
  1. If MsgBox("確認是否需修改", vbQuestion + vbYesNo, "詢問") = vbYes Then
  2.          nrow = Worksheets("工作交接事項").Range("A2:A65536").Find(ITEM.Value, lookat:=xlWhole).Row Or _
  3.          nrow = Worksheets("工作交接事項").Columns(6).Find(LotNo.Value, lookat:=xlWhole).Row
  4.    
  5.     Else
  6.          'nrow = Worksheets("工作交接事項").Columns(6).Find(LotNo.Value, lookat:=xlWhole).Row
  7.    
  8.     End If
  9.    
  10.     With Worksheets("工作交接事項")
  11.       
  12.         .Range(.Cells(nrow, 11), .Cells(nrow, 11)) = Owner.Value
  13.         .Range(.Cells(nrow, 12), .Cells(nrow, 12)) = 回覆時間.Value
  14.         .Range(.Cells(nrow, 13), .Cells(nrow, 13)) = 回覆結果.Value
  15.         .Range(.Cells(nrow, 14), .Cells(nrow, 14)) = 回覆附件.Value
  16.         .Range(.Cells(nrow, 15), .Cells(nrow, 15)) = 備註.Value
  17.         
  18.     End With
複製代碼

作者: c_c_lai    時間: 2016-1-8 19:57

本帖最後由 c_c_lai 於 2016-1-9 08:58 編輯

回復 6# samneng
我只幫你略微修改了 ITEM 以及 LOT 的搜尋處理,
程式規劃一定要明確,流程分明。附上程式碼:
  1. Private Sub CommandButton1_Click()     '  篩選條件
  2.     Dim a As String, myRange As Range  '  宣告變數

  3.     a = ITEM.Text                  '  UserForm3
  4.     If a = "" Then Exit Sub

  5.     With Sheets("工作交接事項")
  6.         '  宣告 a = 表單的 ITEM
  7.          Set myRange = .Columns(1).Find(a, lookat:=xlWhole)
  8.    
  9.         If Not myRange Is Nothing Then
  10.             '  顯示全部資料的多重篩選
  11.             .AutoFilterMode = False
  12.             '  設定ITEM為搜尋條件
  13.             If a <> "" Then .Range("A1").AutoFilter Field:=1, Criteria1:=a
  14.         
  15.             反應日期.Value = .Cells(myRange.Row, "B")      '  反應日期
  16.             反應人員.Value = .Cells(myRange.Row, "C")      '  反應人員
  17.             機台.Value = .Cells(myRange.Row, "D")          '  機台
  18.             Recipe.Value = .Cells(myRange.Row, "E")        '  Recipe
  19.             Lot.Value = .Cells(myRange.Row, "F")           '  Lot No.
  20.             異常簡碼.Value = .Cells(myRange.Row, "G")      '  異常簡碼
  21.             異常問題描述.Value = .Cells(myRange.Row, "H")  '  異常問題描述
  22.             處置狀況.Value = .Cells(myRange.Row, "I")      '  處置狀況
  23.         Else
  24.             MsgBox "無找到相符合 ITEM 條件的紀錄!", vbExclamation, "錯誤"
  25.         End If
  26.         
  27.         '  關閉前將控制項中內容刪除
  28.         Owner.Value = ""
  29.         回覆時間.Value = ""
  30.         回覆結果.Value = ""
  31.         回覆附件.Value = ""
  32.         備註.Value = ""
  33.     End With
  34. End Sub
複製代碼
以及
  1. Private Sub CommandButton3_Click()     '  篩選條件
  2.     Dim a As String, myRange As Range  '  宣告變數

  3.     a = LotNo.Text                 '  UserForm3
  4.     If a = "" Then Exit Sub

  5.     With Sheets("工作交接事項")
  6.         '  宣告 a = 表單的 LotNo

  7.         Set myRange = .Columns(6).Find(a, lookat:=xlWhole)
  8.    
  9.         If Not myRange Is Nothing Then
  10.             '  顯示全部資料的多重篩選
  11.             .AutoFilterMode = False
  12.             '  設定ITEM為搜尋條件
  13.             If a <> "" Then .Range("A1").AutoFilter Field:=6, Criteria1:=a
  14.         
  15.             ITEM.Value = .Cells(myRange.Row, "A")          '  ITEM No.
  16.             反應日期.Value = .Cells(myRange.Row, "B")      '  反應日期
  17.             反應人員.Value = .Cells(myRange.Row, "C")      '  反應人員
  18.             機台.Value = .Cells(myRange.Row, "D")          '  機台
  19.             Recipe.Value = .Cells(myRange.Row, "E")        '  Recipe
  20.             Lot.Value = .Cells(myRange.Row, "F")            '  Lot No.
  21.             異常簡碼.Value = .Cells(myRange.Row, "G")      '  異常簡碼
  22.             異常問題描述.Value = .Cells(myRange.Row, "H")  '  異常問題描述
  23.             處置狀況.Value = .Cells(myRange.Row, "I")      '  處置狀況
  24.         Else
  25.             MsgBox "無找到相符合 LOT 條件的紀錄!", vbExclamation, "錯誤"
  26.         End If
  27.         
  28.         '  關閉前將控制項中內容刪除
  29.         Owner.Value = ""
  30.         回覆時間.Value = ""
  31.         回覆結果.Value = ""
  32.         回覆附件.Value = ""
  33.         備註.Value = ""
  34.     End With
  35. End Sub
複製代碼
至於你所謂之新增,我實在不知你的企圖。
作者: c_c_lai    時間: 2016-1-9 10:13

回復 6# samneng
將新增部分附上:
  1. Private Sub CommandButton2_Click()
  2.     Dim myRange As Range

  3.     '  判斷資訊是否輸入完整
  4.     If Owner.Value = "" Or 回覆時間.Value = "" Or 回覆結果.Value = "" Or 回覆附件.Value = "" Or 備註.Value = "" Then
  5.         MsgBox "資訊輸入不完整,請重新輸入!", vbExclamation, "錯誤提示"
  6.         Exit Sub       '  輸入不完整,退出執行程式
  7.     End If
  8.    
  9.     With Sheets("工作交接事項")
  10.         If MsgBox("確認是否需修改", vbQuestion + vbYesNo, "詢問") = vbYes Then
  11.             Set myRange = .Columns(6).Find(Lot.Value, lookat:=xlWhole)

  12.             If .Cells(myRange.Row, 16) = "已結案" Then
  13.                 MsgBox "該工作交接已結案" & vbCrLf & "無法再次新增紀錄"
  14.             Else
  15.                 .Cells(myRange.Row, 11) = Owner.Text
  16.                 .Cells(myRange.Row, 12) = 回覆時間.Text
  17.                 .Cells(myRange.Row, 13) = 回覆結果.Text
  18.                 .Cells(myRange.Row, 14) = 回覆附件.Text
  19.                 .Cells(myRange.Row, 15) = 備註.Text
  20.                 .Cells(myRange.Row, 16) = IIf(CheckBox1 = True, "已結案", "未結案")
  21.             End If
  22.             
  23.             '  將內容寫入工作表後,將控制項中內容刪除
  24.             Owner.Value = ""
  25.             回覆時間.Value = ""
  26.             回覆結果.Value = ""
  27.             回覆附件.Value = ""
  28.             備註.Value = ""
  29.             CheckBox1 = False
  30.         End If
  31.     End With
  32. End Sub
複製代碼
供你參考。
作者: samneng    時間: 2016-1-10 12:36

真的很感謝c_c_lai大大... 小的研究所以晚回... 很抱歉喔!
目前小的測試結果是正常的果然前輩的手法比小的高明甚多~...
沒有想到在搜尋LotNo同時顯示相對應的ITEM編號... 真的太聰明了!...
再次感謝c_c_lai大大... 另新增測試也是正常的...小的會謹記大大的教導"程式規劃明確&流程分明"的目標努力中
若有造成不便之處敬請見諒... 小的會努力學習的!... 感恩~謝謝c_c_lai大大的指導!




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