返回列表 上一主題 發帖

小問題請高手幫忙看一下!!

回復 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
有語病。

TOP

回復 4# samneng
先請教你一個疑問 (在不去思考你程式下),為何有兩個修正選紐?

TOP

本帖最後由 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
複製代碼
至於你所謂之新增,我實在不知你的企圖。

TOP

回復 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
複製代碼
供你參考。

TOP

        靜思自在 : 布施如播種,以歡喜心滋潤種子,才會發芽。
返回列表 上一主題