返回列表 上一主題 發帖

修改程式碼

修改程式碼

如何讓以下的程式包含在找不到員工編號,能提醒,希望在多加上如果不想在TextBox3上輸入編號(空白)的意思,就直接在活頁呈現空白的指令,

Private Sub CommandButton1_Click()
    On Error Resume Next
    '輸入員工編號後用 函數來取得員工姓名
    ranme = sht2.Cells(WorksheetFunction.Match(TextBox3.Text, sht2.Range("D:D"), 0), "E")
    '如果查無員工編號,要求重新輸入員工編號
    If ranme = "" Then
        MsgBox "查無員工編號,請重新輸入"
        UserForm1.TextBox3.Text = ""
        UserForm1.TextBox3.SetFocus
        Exit Sub
    End If
    On Error GoTo 0
    With sht1
        .Range("A2") = Me.ComboBox1.List(Me.ComboBox1.ListIndex, 0)
        .Range("A4") = Me.ComboBox1.List(Me.ComboBox1.ListIndex, 1)
        .Range("B4") = TextBox2.Text
        .Range("B7") = ranme '這裡是TextBox3轉寫地方
    End With
End Sub

麻煩各位先進們不吝指教~

回復 1# man65boy
  1. Option Explicit
  2. Private Sub CommandButton1_Click()
  3.     Dim ranme As Variant
  4.     '輸入員工編號後用 函數來取得員工姓名
  5.     ranme = Application.Match(TextBox3.Text, Sht2.Range("D:D"), 0)
  6.     '如找到 ranme->傳回數字 ,否則 ranme ->錯誤值 "# N/A"
  7.     If IsError(ranme) Then    '如果查無員工編號,要求重新輸入員工編號
  8.         MsgBox "查無員工編號,請重新輸入"
  9.         UserForm1.TextBox3.Text = ""
  10.         UserForm1.TextBox3.SetFocus
  11.         Exit Sub
  12.     End If
  13.     With Sht1
  14.         .Range("A2") = Me.ComboBox1.List(Me.ComboBox1.ListIndex, 0)
  15.         .Range("A4") = Me.ComboBox1.List(Me.ComboBox1.ListIndex, 1)
  16.         .Range("B4") = TextBox2.Text
  17.         .Range("B7") = TextBox3     '這裡是TextBox3轉寫地方
  18.     End With
  19. End Sub
複製代碼

TOP

本帖最後由 man65boy 於 2012-1-8 20:47 編輯

回復 2# GBKEE


   
    重點是要:有輸入時,找不到員工編號,能夠提醒,在多加上如果不想在TextBox3上輸入編號,只輸入空白,按OK就直接在活頁呈現空白,

   複製老師所改的程式,出現
未變數位定義.png
2012-1-8 19:38
, 小弟把原始表單移一些過來給老師過目,小弟VBA程度差很多,怕浪費老師的時間,

1010108.rar (9.86 KB)

TOP

回復 3# man65boy
  1. Dim sht1 As Worksheet
  2. Dim sht2 As Worksheet
  3. Private Sub ComboBox1_Change()
  4.     Dim i As Integer
  5.     i = ComboBox1.ListIndex    'ListIndex 屬性 用來識別 ListBox 或 ComboBox 中的目前選取專案

  6.     With sht1
  7.         If i < 0 Then         ' -1 時 ComboBox1的選取不在ComboBox1.List的範圍
  8.             TextBox3.Text = ""            '
  9.             .Range("B7") = ""
  10.         Else
  11.             TextBox3 = ComboBox1.List(i, 1)          ' sht2.Range("d2:e" & r).Value: 第2欄:姓名
  12.             .Range("B7") = ComboBox1.List(i, 1)
  13.         End If
  14.     End With
  15. End Sub
  16. Private Sub UserForm_Initialize()
  17.     Dim r As Integer
  18.     Set sht1 = Sheets("列印")
  19.     Set sht2 = Sheets("資料表")
  20.     r = sht2.Range("D65536").End(xlUp).Row
  21.     With ComboBox1
  22.         .List = sht2.Range("D2:E" & r).Value   '設置ComboBox1的List的內容
  23.         .ColumnCount = 1                       '只顯示 第1欄:編號   ,第2欄:姓名->不顯示
  24.         .Style = 0                             'ComboBox 為一個下拉式清單。 使用者或從下拉式清單中選取可在文字區輸入 ( 預設 )。         '
  25.         .MatchRequired = Fasle                 'MatchRequired 屬性為 True,使用者就必須輸入符合清單中既有專案的文字,才可離開 ComboBox。藉著要求使用者選取既有的專案,可以使 MatchRequired 維護清單的完整性。
  26.         .TabIndex = 1                          '設定在表單中的定位順序。
  27.     End With
  28. End Sub
  29. Private Sub CommandButton2_Click()
  30.     Unload Me
  31. End Sub
複製代碼

TOP

本帖最後由 man65boy 於 2012-1-10 19:22 編輯

回復 4# GBKEE

感謝GBKEE大大的回答,想請大大在修改一些,小弟可能把範例多加了ComboBox1下拉,拍事,小弟錯看程式需要ComboBox1,不過也謝謝大大給了小弟不錯的範例,我再把檔案重新上傳,這次部會錯了。

10101090.rar (12.62 KB)

TOP

回復 5# man65boy
  1. Private Sub CommandButton1_Click()
  2. Dim A As Range
  3.     Set A = sht2.[D:D].Find(TextBox3.Text, lookat:=xlWhole)
  4.     '如果查無員工編號,要求重新輸入員工編號
  5.     If A Is Nothing Then '如果編號不存在
  6.         MsgBox "查無員工編號,請重新輸入"
  7.         UserForm1.TextBox3.Text = ""
  8.         UserForm1.TextBox3.SetFocus
  9.         Exit Sub
  10.     End If
  11.     With sht1
  12.         .Range("B7") = A.Offset(, 1)
  13.     End With
  14. End Sub
複製代碼
學海無涯_不恥下問

TOP

回復 6# Hsieh

感謝超級版主的解題,小弟感恩在心頭,祝版主"龍年行大運~發大財" 新年快樂!

TOP

回復 5# man65boy
  1. Dim sht1 As Worksheet, sht2 As Worksheet
  2. Private Sub CommandButton1_Click()
  3.     Dim ranme As Variant
  4.     '輸入員工編號後用 Match 函數來取得員工姓名
  5.     ranme = Application.Match(TextBox3.Text, sht2.Range("D:D"), 0)
  6.     '如果查無員工編號,要求重新輸入員工編號
  7.     With sht1
  8.         If IsError(ranme) Then '如找到 ranme->傳回數字 ,否則 ranme ->錯誤值 "# N/A"
  9.             MsgBox "查無員工編號,請重新輸入"
  10.             UserForm1.TextBox3.Text = ""
  11.             UserForm1.TextBox3.SetFocus
  12.             .Range("B7") = ""
  13.         Else
  14.             .Range("B7") = sht2.Range("E" & ranme)
  15.         End If
  16.     End With
  17. End Sub
  18. Private Sub CommandButton2_Click()
  19.     Unload Me
  20. End Sub
  21. Private Sub UserForm_Initialize()
  22.     Set sht1 = Sheets("列印")
  23.     Set sht2 = Sheets("資料表")
  24. End Sub
複製代碼

TOP

回復 8# GBKEE


    感謝GBKEE大大的解題,讓小弟又多了不一樣程式碼參考學習,感謝你,也祝你"龍年行大運~財源滾來" 新年快樂!

TOP

        靜思自在 : 人的眼睛長在前面,只看到別人的缺點,絲毫看不到自己的缺點。
返回列表 上一主題