Page 1 of 1

สูตร วิธีเรียก macro ด้วย Enter

Posted: Tue Feb 10, 2015 3:44 pm
by tamart256
ขอสูตร วิธีเรียก macro ด้วย Enter
เมื่อเราพิมข้อความเสร็จแล้ว กด Enter เรียก macro มา แทนที่เราจะไปกด ปุ่มบันทึกเวลา

งง หลายวันเลยครับบบบ

Re: สูตร วิธีเรียก macro ด้วย Enter

Posted: Tue Feb 10, 2015 4:35 pm
by bank9597
ใช้ event onKeyPress ครับ

ปรับโค๊ดจากตัวอย่างโค๊ดนี้ได้เลยครับ

Code: Select all

Private Sub Worksheet_Change(ByVal Target As Range)
        If KeyCode = 13 Then
            With Worksheets("Sheet1")
                .RoundedRectangle1_Click
            End With

        End If
End Sub

Re: สูตร วิธีเรียก macro ด้วย Enter

Posted: Tue Feb 10, 2015 7:26 pm
by snasui
bank9597 wrote:ใช้ event onKeyPress ครับ

ปรับโค๊ดจากตัวอย่างโค๊ดนี้ได้เลยครับ

Code: Select all

Private Sub Worksheet_Change(ByVal Target As Range)
        If KeyCode = 13 Then
            With Worksheets("Sheet1")
                .RoundedRectangle1_Click
            End With

        End If
End Sub
:D ควรให้คุณ tamart256 ได้นำเสนอที่ตนเองได้ลองทำมาแล้วก่อน เพื่อให้เป็นไปตามกฎด้านบนครับ

Re: สูตร วิธีเรียก macro ด้วย Enter

Posted: Tue Feb 10, 2015 7:52 pm
by bank9597
:oops: ผิกกฏจนได้

Re: สูตร วิธีเรียก macro ด้วย Enter

Posted: Mon Nov 14, 2016 11:58 am
by xxporxx
ผมขอถามต่อกระทู้นี้ นะครับ คือผมลองเอา Code นี้ไปใช้แล้วมันไม่ได้ผลครับ ไม่รู้ว่าผมใส่ Code ผิดที่หรือเปล่าครับ รบกวนช่วยชี้แนะด้วยนะครับ มือใหม่หัดเขียนครับ

Re: สูตร วิธีเรียก macro ด้วย Enter

Posted: Mon Nov 14, 2016 4:26 pm
by DhitiBank
คุณ xxporxx เขียนโค้ดนี้ในชีท "สรุป" และในชีทดังกล่าวไม่มีวัตถุที่ชื่อ "RoundedRectangle1" ครับ ดังนั้นหากต้องการใช้คำสั่งแบบนี้ ก็ต้องใส่วัตถุ roundedrectangle1 ลงไป เขียนคำสั่งว่าเมื่อคลิกที่วัตถุนี้แล้วต้องการให้โปรแกรมทำอะไร จากนั้นลองทดสอบคีย์ข้อมูลในชีทสรุปแล้วกด Enter อีกครั้ง คำสั่งก็น่าจะทำงานได้ตลอดครับ

Re: สูตร วิธีเรียก macro ด้วย Enter

Posted: Tue Nov 15, 2016 1:34 pm
by xxporxx
ขอบคุณ คุณ DhitiBank ครับ
แต่ว่าผมก็ยังทำไม่ได้ครับ(กำลังพยายามทำต่อไป)
แล้ว RoundedRectangle1 คืออะไรครับ
ผมลองเพิ่ม Code เข้าไปก็ไม่มีอะไรเกิดขึ้นเลยครับไม่ทราบว่าเป็นเพราะอะไรครับ
(Code นี้ผมจะเอาไว้ที่ชีตยอดจ่ายครับจะได้ไม่ต้องกดปุ่มบันทึกครับเป็นกด Enter แทนครับ)
Private Sub Worksheet_Change(ByVal Target As Range)

If (Target.Address = Range("a1").Address) Then
If KeyDown = 13 Then

With Worksheets("wkPay")

End With

End If
End If

End Sub
[/code]

Re: สูตร วิธีเรียก macro ด้วย Enter

Posted: Tue Nov 15, 2016 3:43 pm
by DhitiBank
หากต้องการให้โค้ดทำงานเมื่อมีการเปลี่ยนแปลงในชีท "ยอดจ่าย" เซลล์ A2 ลองปรับตรง
Target.Address = Range("a1").Address เป็น Target.Address = Range("a2").Address ครับ

ส่วนเรื่อง KeyCode นี่ผมไม่ทราบครับ คงต้องรออาจารย์และเพื่อนๆ ท่านอื่น

แต่ว่า หากต้องการให้โค้ดทำงานเมื่อเปลี่ยนแปลงค่าในเซลล์ดังกล่าวโดยไม่สนใจว่าจะกดปุ่มอะไร เช่น คีย์แล้วกด Enter, Tab, ลูกศรลง ฯลฯ ก็ไม่จำเป็นต้องเขียนโค้ดเพื่อดักจับว่ากดปุ่มอะไรก็ได้นะครับ

Re: สูตร วิธีเรียก macro ด้วย Enter

Posted: Wed Nov 16, 2016 7:46 pm
by snasui
xxporxx wrote:ผมลองเพิ่ม Code เข้าไปก็ไม่มีอะไรเกิดขึ้นเลยครับไม่ทราบว่าเป็นเพราะอะไรครับ
(Code นี้ผมจะเอาไว้ที่ชีตยอดจ่ายครับจะได้ไม่ต้องกดปุ่มบันทึกครับเป็นกด Enter แทนครับ)

Code: Select all

Private Sub Worksheet_Change(ByVal Target As Range)

If (Target.Address = Range("a1").Address) Then
If KeyDown = 13 Then

With Worksheets("wkPay")

End With

End If
End If

End Sub
:D Code ที่เพิ่มเข้ามานี้ไม่มีคำสั่งให้เกิดการทำงานครับ

Code ที่จะสั่งให้เกิดการทำงานคือด้านล่างครับ
snasui wrote:

Code: Select all

Private Sub Worksheet_Change(ByVal Target As Range)
        If KeyCode = 13 Then
            With Worksheets("Sheet1")
                .RoundedRectangle1_Click '<== บรรทัดนี้เป็นการสั่งให้ทำงาน
            End With
        End If
End Sub
จากคำถามนี้
xxporxx wrote:แล้ว RoundedRectangle1 คืออะไรครับ
คือสี่เหลี่ยมมุมป้าน กำหนดการ Run Macro ไว้กับปุ่มนี้ ใช้คลิกเพื่อให้ Macro ทำงานครับ

Re: สูตร วิธีเรียก macro ด้วย Enter

Posted: Thu Nov 17, 2016 2:53 pm
by xxporxx
ขอบคุณทุกคำตอบนะครับ ตอนนี้ทำได้แล้วครับ
ขอบคุณมากครับ
แต่ว่าตอนมีปัญหาใหม่ครับ ขอตัวไปตั้งกระทู้ก่อนครับ

Re: สูตร วิธีเรียก macro ด้วย Enter

Posted: Sat Dec 10, 2016 3:50 pm
by Jatuphon Phimpho
ขออนุญาติถามครับ..
Key code =13 คือค่าอะไรครับ..
RoundedRectangle1 คือปุ่มที่เราสร้างมาเพื่อใช้ run macro แต่เราจะใช้ Enter runปุ่มนี้ แทนการ คลิ๊ก ปุ่มนี้ใช่ไหมครับ.

Re: สูตร วิธีเรียก macro ด้วย Enter

Posted: Sat Dec 10, 2016 6:11 pm
by snasui
Jatuphon Phimpho wrote:ขออนุญาติถามครับ..
Key code =13 คือค่าอะไรครับ..
RoundedRectangle1 คือปุ่มที่เราสร้างมาเพื่อใช้ run macro แต่เราจะใช้ Enter runปุ่มนี้ แทนการ คลิ๊ก ปุ่มนี้ใช่ไหมครับ.
:D Key Code ต่าง ๆ ศึกษาจาก Link นี้ครับ Key Code

กรณี Enter แล้วให้ Code ทำงานสามารถประยุกต์ใช้ Worksheet_Change เข้ามาช่วยได้ ดูตัวอย่างในโพสต์ #9 ครับ :roll: