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
:D ตัวอย่างการปรับ 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::D ตัวอย่างการปรับ 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
:thup: ขอบคุณครับอาจารย์ 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
:lol: น่าจะมีปัญหาตั้งแต่ตอนนี้ไม่ต้องรอภายหลังครับ :mrgreen:
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 ดูตัวอยางตามภาพครับ
Image

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") "
ขอบคุณครับ