Page 1 of 1
คลิกข้อมูลในเซลที่ต้องการแล้วให้โชว์ค่า
Posted: Sat Aug 22, 2015 5:31 pm
by yodpao.b
คลิกข้อมูลในเซลที่ต้องการแล้วให้โชว์ค่า
รูปที่1
Capture.PNG
จากรูปที่ 1 เมื่อคลิกเลข 20 ข้อมูลจะโชวที่เซล K61 ดังรูปด้านบน
โดยใช้ code ด้านล่างถูกต้องครับ
Code: Select all
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Sheets("Table").Range("K61") = ActiveCell.Offset(0, 0)
End Sub
แต่มีปัญหาเกิดขึ้นที่เวลาไปคลิกเซลอื่นเช่น I66 VBA ก็ยังทำงานอยู่นั้นหมายถึงไม่ว่าคลิกเซลใดใดก็ยังทำงานดังรูปที่ 2
Capture1.PNG
คำถามต้องการให้มันทำงานเฉพาะเวลาคลิกทีเซล j117:cb117 ครับ
Re: คลิกข้อมูลในเซลที่ต้องการแล้วให้โชว์ค่า
Posted: Sat Aug 22, 2015 6:20 pm
by DhitiBank
ลองปรับโค้ดเป็นแบบนี้ดูครับ
Code: Select all
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Row=117 And (Target.Column>=10 And Target.Column<=80) Then _
Sheets("Table").Range("K61") = ActiveCell.Offset(0, 0)
End Sub
Re: คลิกข้อมูลในเซลที่ต้องการแล้วให้โชว์ค่า
Posted: Sat Aug 22, 2015 7:34 pm
by yodpao.b
yodpao.b wrote:คลิกข้อมูลในเซลที่ต้องการแล้วให้โชว์ค่า
คำถามต้องการให้มันทำงานเฉพาะเวลาคลิกทีเซล j117:cb117 ครับ
ขอโทษครับ ผมพิมพ์ผิด
ที่ถูกคือ คำถามต้องการให้มันทำงานเฉพาะเวลาคลิกทีเซล (J67:CฺB117) ครับ
ช่วยแก้ code ให้หน่อยครับ ยังError ครับ
Code: Select all
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Row = 67 And (Target.Row = 117 And Target.Column >= 10 And Target.Column <= 80) Then
Sheets("Table").Range("K61") = ActiveCell.Offset(0, 0)
End Sub
ขอบคุณมากครับ
Re: คลิกข้อมูลในเซลที่ต้องการแล้วให้โชว์ค่า
Posted: Sat Aug 22, 2015 8:25 pm
by snasui

ตัวอย่างการปรับ Code ครับ
Code: Select all
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, Range("J67:CB117")) Is Nothing Then
Sheets("Table").Range("K61") = Target.Value
End If
End Sub
Re: คลิกข้อมูลในเซลที่ต้องการแล้วให้โชว์ค่า
Posted: Sat Aug 22, 2015 8:55 pm
by DhitiBank
snasui wrote:
ตัวอย่างการปรับ Code ครับ
Code: Select all
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, Range("J67:CB117")) Is Nothing Then
Sheets("Table").Range("K61") = Target.Value
End If
End Sub

ขอบคุณครับอาจารย์ VBA นี่มีอะไรเยอะแยะจริงๆ ขอเก็บเอาไปทำความเข้าใจก่อนครับ Not ... Is Nothing ปฏิเสธซ้อนปฏิเสธ ผมยังงงๆ อยู่

Re: คลิกข้อมูลในเซลที่ต้องการแล้วให้โชว์ค่า
Posted: Sat Aug 22, 2015 9:01 pm
by yodpao.b
เรียนอาจารย์ครับ ถ้าผมเพิ่มอีก 1 เซล คือ Range("K65") ที่ Target
โดยใช้สูตรดังนี้
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, Range("K65", "J67:CB117")) Is Nothing Then
Sheets("Table").Range("K61") = Target.Value
End If
End Sub
จะมีปัญหาภายหลังไม่ครับ
Re: คลิกข้อมูลในเซลที่ต้องการแล้วให้โชว์ค่า
Posted: Sat Aug 22, 2015 9:26 pm
by snasui

น่าจะมีปัญหาตั้งแต่ตอนนี้ไม่ต้องรอภายหลังครับ
yodpao.b wrote:Range("K65[color=#FF4000]"[/color], [color=#FF4000]"[/color]J67:CB117")
ที่ผมยกมาด้านบนนั้นหมายถึง
$J$65:$CB$117
แต่หากเขียนเป็น
Range("K65, J67:CB117") หมายถึง
$K$65,$J$67:$CB$117
ลองดูว่าเจตนาที่แท้จริงต้องการกำหนดแบบใดครับ
การ
Intersection ดูตัวอยางตามภาพครับ

Re: คลิกข้อมูลในเซลที่ต้องการแล้วให้โชว์ค่า
Posted: Sat Aug 22, 2015 9:45 pm
by yodpao.b
ครับขอบคุณมากครับ
ไฟล์นี้สมบูรณ์แล้วครับ
Re: คลิกข้อมูลในเซลที่ต้องการแล้วให้โชว์ค่า
Posted: Fri Aug 28, 2015 7:05 pm
by yodpao.b
เข้าใจแล้วครับผมใช้ " Range("K65, J67:CB117") "
ขอบคุณครับ