- 帖子
- 552
- 主題
- 3
- 精華
- 0
- 積分
- 578
- 點名
- 0
- 作業系統
- win7
- 軟體版本
- office 2010
- 閱讀權限
- 50
- 性別
- 男
- 註冊時間
- 2015-2-8
- 最後登錄
- 2024-7-9
  
|
2#
發表於 2015-6-30 19:30
| 只看該作者
回復 1# l020330320
搜尋速度要快可以利用陣列來找速度會快很多的!下面代碼給你參考!- Private Sub CommandButton4_Click() '輸入工卡號碼
- Dim a As String, cardnumber As String
- Dim arr2()
- Application.ScreenUpdating = False
- cardnumber = InputBox("請輸入工卡號碼(建議使用條碼器)")
- i = 9
- x = 1
- arr = Sheets("資料庫").Range("a2:bj" & Sheets("資料庫").Cells(Rows.Count, 2).End(xlUp).Row)
- For j = 1 To UBound(arr, 1)
- If arr(j, 2) = cardnumber Then
- ReDim Preserve arr2(1 To 42, 1 To x)
- arr1 = Application.Transpose(Application.Index(arr, j, 0))
- For s = 1 To 42
- arr2(s, x) = Application.Transpose(arr1(s, 1))
- Next
- x = x + 1
- End If
- Next
- [a2] = cardnumber
- [b9].Resize(UBound(arr2, 2), UBound(arr2, 1)) = Application.Transpose(arr2)
- 'Sheets("資料庫").Activate
- 'a = Application.WorksheetFunction.Match(CDbl(cardnumber), Sheets("資料庫").[B:B], 0) '設定資料庫裡的B欄搜尋結果為a
- 'If a = "0" Then
- ' MsgBox "未搜尋到您所輸入的工卡號碼,請確認資料來源無誤。"
- ' Sheets("登錄").Select
- ' Exit Sub
- 'Else
- ' Sheets("登錄").Range("A2") = cardnumber
- ' firstAddress = Cells(a, 2).Address
- '
- ' Do
- ' Sheets("資料庫").Select
- ' ActiveSheet.Range(ActiveSheet.Cells(a, 1), ActiveSheet.Cells(a, 62)).Select '選擇並複製欄位
- ' Selection.Copy
- '
- ' Sheets("登錄").Select
- ' '如果判定B欄C欄及K欄都為空值的話則貼上
- ' If (ActiveSheet.Cells(i, 2) = "" And ActiveSheet.Cells(i, 3) = "" And ActiveSheet.Cells(i, 6) = "") Then
- ' ActiveSheet.Cells(i, 2).Select
- ' Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
- ' Application.CutCopyMode = False
- '
- ' Sheets("資料庫").Select
- '
- ' 'a = a.Nextmatch()
- ' secondAddress = Cells(a, 2).Address '判斷ADDRESS後選取複製欄位
- ' Else
- ' End If
- ' i = i + 1
- '
- ' Loop While secondAddress <> firstAddress
- ' Sheets("登錄").Select
- '
- 'End If
- Range("K9") = "=G7"
- Range("K10") = "=H7"
- Range("K11") = "=I7"
- Range("K12") = "=J7"
- Range("K13") = "=K7"
- Range("K14") = "=L7"
- Range("K15") = "=M7"
- Range("K16") = "=N7"
- Range("K17") = "=O7"
- Range("K18") = "=P7"
- Application.ScreenUpdating = True
- End Sub
複製代碼 |
|