รบกวนอาจารย์เพิ่มเติมหน่อยครับจาก Code ข้างล่างผมเพิ่มเติมดังนี้ครับ
1. ให้เช็คว่าข้อมูลที่คีย์เข้าไป ซ้ำกับในฐานข้อมูลหรือเปล่า แต่ไม่สำเร็จ คือมันฟ้องตลอดเลยครับ ไม่ว่าจะซ้ำหรือไม่ซ้ำ มันฟ้องตลอดเลยครับ หรือว่าผมใช้ Event ไม่ถูก
Code: Select all
Set FoundRange = Columns(1).Find(What:=Range("A" & Rows.Count).End(xlUp)) 'ãËéËÒ¤Ó·ÕèàËÁ×͹㹠Colum A
If Not (FoundRange Is Nothing) Then '¶éÒà¨ÍÇèÒ«éÓ
MsgBox ("ÁÕ¢éÍÁÙÅ«éÓã¹°Ò¹¢éÍÁÙÅ")
Range("A" & Rows.Count).End(xlUp) = ""
Range("A" & Rows.Count).End(xlUp).Activate
GoTo EndProcess
End If
2. ผมพยายามแยกข้อมูลระหว่างที่คีย์ว่า ถ้าคีย์ข้อมูลใน ColumnA แล้วไม่มีในฐานข้อมูลให้ระบบทำให้ข้อมูลนั้นเป็นตัวหน้าและเป็น Font สีแดง แต่มันเพี้ยนไปครับ บางที่มีข้อมูลในฐานข้อมูลก็เปลี่ยนสีแดงด้วย ทั้งที่โปรแกรมก็สั่งให้เฉพาะที่ไม่มีในฐานข้อมูลเท่านั้นให้ตัวหนังสือเป็นสีแดง
Code: Select all
If IsError(Amount) Then
Range("A" & Rows.Count).End(xlUp).Application.Selection.Font.ColorIndex = 3
Range("A" & Rows.Count).End(xlUp).Application.Selection.Font.Bold = True
Else
r.Offset(0, 2) = Amount
End If
ส่วนนี้โปรแกรมรวมทั้งหมดครับ
Code: Select all
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim Rng As Range
Dim ColAmount As Integer
Dim ColName As Integer
Dim Amount As Variant
Dim Name As Variant
Dim rAll As Range
Dim r As Range
Dim FoundRange As Range
If Range("A" & Rows.Count).End(xlUp) <> "" Then
Set FoundRange = Columns(1).Find(What:=Range("A" & Rows.Count).End(xlUp)) 'ãËéËÒ¤Ó·ÕèàËÁ×͹㹠Colum A
If Not (FoundRange Is Nothing) Then '¶éÒà¨ÍÇèÒ«éÓ
MsgBox ("ÁÕ¢éÍÁÙÅ«éÓã¹°Ò¹¢éÍÁÙÅ")
Range("A" & Rows.Count).End(xlUp) = ""
Range("A" & Rows.Count).End(xlUp).Activate
GoTo EndProcess
End If
Set LookFor = Sheets("Sheet2").Range("A1")
Set Rng = Sheets("Sheet1").Columns("A:C")
With Sheets("Sheet2")
Set rAll = .Range("A1", .Range("A" & Rows.Count).End(xlUp))
End With
ColName = 2
ColAmount = 3
On Error Resume Next
For Each r In rAll
Amount = Application.VLookup(r, Rng, ColAmount, 0)
Name = Application.VLookup(r, Rng, ColName, 0)
If IsError(Amount) Then
Range("A" & Rows.Count).End(xlUp).Application.Selection.Font.ColorIndex = 3
Range("A" & Rows.Count).End(xlUp).Application.Selection.Font.Bold = True
Else
r.Offset(0, 2) = Amount
End If
If IsError(Name) Then
'MsgBox r.Offset(0, 0) & " äÁèÁÕª×èÍÅÙ¡¤éÒã¹°Ò¹¢éÍÁÙÅ"
'r.Offset(0, 0) = "" '·ÓãËé¢éÍÁÙÅ㹺ÃÃ·Ñ´ÊØ´ã¹ Column A à»ç¹ ÇèÒ§
'r.Offset(0, 0).Activate '仺ÃÃ·Ñ´ÊØ´·éÒÂã¹ Column A
Exit Sub
Else
r.Offset(0, 1) = Name
End If
Next r
End If
EndProcess:
On Error GoTo 0
End Sub