- 帖子
- 835
- 主題
- 6
- 精華
- 0
- 積分
- 915
- 點名
- 0
- 作業系統
- Win 10,7
- 軟體版本
- 2019,2013,2003
- 閱讀權限
- 50
- 性別
- 男
- 註冊時間
- 2010-5-3
- 最後登錄
- 2024-11-14
|
7#
發表於 2014-8-23 09:25
| 只看該作者
本帖最後由 luhpro 於 2014-8-23 09:52 編輯
小弟再附上檔案 ,
在item欄位 ,如改以 數字 格式的 國際條碼.
1.無法作比對 ,
2.相同在textbox2, ...
melvinhsu 發表於 2014-8-21 09:52 
問題1 :
那是因為
Cells(lRow, 1) 內是是數字,
而 TextBox2 內是文字.
即便看到的都是一樣的字,
但兩者的形態不同,
所以 Cells(lRow, 1) = TextBox2 的資料比對會不成功.
只要在 Cells(lRow, 1) 外加上 CStr () 把它先轉成文字就可以比對成功了.
問題2:
因為 Sub TextBox2_Change 程序實際上是每次內容發生變動(例如輸入 1 個字)就會執行 1 次,
所以 If Label3 = "" Then MsgBox "找不到資料" 這一行訊息會一直出現(造成 scanner scan資料輸入中斷, 後續資料進不來),
只要拿掉即可.
另, Range 的 Copy 指令使用時,
若只有指定 Destination 而無其他特殊需求,
則 Destination:= 可以不用列出來,
只要打 Cells(2, 8).Copy Cells(3, 8) 即可.
後來我發現 Label3 出現文字(即比對成功)的現象很不明顯,
所以我加上當其內容出現文字時,
底色會變淺綠色,
反之就恢復成白色
這樣比對結果就會明顯多了.
綜上所述程式修改如下:- Private Sub TextBox2_Change()
- Cells(2, 8).Copy Cells(3, 8)
-
- Dim lRow&
- Dim dItm
-
- Label3 = ""
- lRow = 2
- Do While Cells(lRow, 1) <> ""
- If CStr(Cells(lRow, 1)) = TextBox2 Then
- With Label3
- .Caption = Cells(lRow, 3)
- .BackColor = &HC0FFC0
- End With
- Set rTar = Cells(lRow, 1)
- Exit Do
- Else
- Label3.BackColor = &H80000005
- End If
- lRow = lRow + 1
- Loop
- End Sub
複製代碼 |
|