:D snasui.com ยินดีต้อนรับ :D
ยินดีต้อนรับสู่กระดานถามตอบ Excel and VBA และอื่น ๆ ที่เป็นมิตรกับทุกท่าน มีไฟล์แนบมหาศาล ช่วยให้ท่านค้นหาและติดตามศึกษาได้โดยง่าย :thup: สมาชิกท่านใดที่ยังไม่ได้ระบุ Version ของ Excel ที่ใช้งานจริง สามารถทำตาม Link นี้เพื่อจะได้รับคำตอบที่ตรงกับ Version ของท่านครับ :arrow: ระบุ Version ของ Excel
:!: โปรดทราบ :!:
  1. กรุณาอ่านกฎการใช้บอร์ด (Forum rules) ในตำแหน่งด้านบนของแต่ละบอร์ด
  2. การสมัครสมาชิก การ Login การกู้คืนรหัสผ่าน
    1. สมัครสมาชิกดูขั้นตอนได้ที่ :arrow: สมัครสมาชิก
    2. Login เข้าระบบโดยคลิกปุ่ม Login ตรงมุมขวาบนของหน้านี้ :roll:
    3. การ Login ผ่าน Facebook ดูวิธีที่ :arrow: Login ผ่าน Facebook
    4. ลืมรหัสผ่านสามารถรับรหัสใหม่ได้ที่ :arrow: Reset รหัสผ่าน
  3. มีปัญหาการใช้งาน แจ้งผู้ดูแลระบบได้ที่ :arrow: ติดต่อผู้ดูแลระบบ
  4. กำหนดการตั้งค่าส่วนตัว เช่นตั้งค่าภาษาเป็นไทยหรืออังกฤษดูได้ที่ :arrow: ตั้งค่าส่วนตัว
  5. การตั้งและตอบกระทู้ดูได้ที่ :arrow: วิธีการตั้งและตอบกระทู้
  6. การจัดรูปแบบตัวอักษรด้วย bbcode ในช่องแสดงความคิดเห็นดูได้ที่ :arrow: จัดรูปแบบตัวอักษร
  7. กำหนดขนาดตัวอักษรใน Browser ดูได้ที่ :arrow: กำหนดขนาดตัวอักษรใน Browser
🪷 คำแสดงเจตนา
ขอผลแห่งการให้ความรู้นี้ จงกลับไปยังผู้ที่เป็นเจ้าของเดิม แม้ข้าพเจ้าจะไม่รู้จักท่านก็ตาม ขอให้แสงแห่งปัญญาที่ท่านเคยจุดไว้ ได้กลับไปเติมเต็มชีวิตของท่านอีกครั้ง และขอให้เจตนาของข้าพเจ้าเป็นการคืนความดีอย่างสงบ

คีย์ตัวเลข 2 หลัก โดยไม่ต้องกด Enter ใน VBA

ฟอรัมถาม-ตอบปัญหาการใช้งาน Macro และ VBA
Forum rules
  1. ไม่อนุญาตให้ใช้ภาษาแชทในการถามและตอบปัญหา ไม่ใช้คำว่า "คับ" หรือ "อ่ะครับ" แทนคำว่า "ครับ" ไม่ใช้คำว่า "เด๋ว" แทนคำว่า "เดี๋ยว" เป็นต้น เนื่องจากเมื่อแปลเป็นภาษาต่างประเทศแล้วจะให้ความหมายผิดไปจากที่ควรจะเป็น
  2. ห้ามถามโดยระบุชื่อผู้ตอบและต้องตั้งชื่อกระทู้ให้สื่อถึงปัญหาที่จะถาม ไม่ตั้งชื่อว่า ช่วยด้วยครับ, มีปัญหามาปรึกษาครับ เป็นต้น
  3. กรุณาอธิบายปัญหาและระบุคำตอบที่ต้องการมาในกระทู้ด้วยเสมอถึงแม้จะอธิบายไว้ในไฟล์แนบแล้วก็ตาม ทั้งนี้เพื่ออำนวยความสะดวกแก่เพื่อนสมาชิกในการค้นหาข้อมูล
  4. กรุณาแนบไฟล์ตัวอย่างพร้อมแสดงคำตอบที่ถูกต้องมาในไฟล์ด้วยเพื่อให้ง่ายต่อการทำความเข้าใจและสะดวกต่อการตอบคำถาม (ขนาดไฟล์ไม่เกิน 500Kb ขนาดภาพไม่เกิน 800*600 Pixel) ไม่แนบเป็น Link มาจากแหล่งอื่นที่อาจจะถูกลบทิ้งไปโดยต้นทางในภายหลัง นอกจากนี้ไม่ควรแนบไฟล์ที่มีข้อมูลสำคัญอันก่อให้เกิดความเสียหายกับตนเองและผู้อื่น
  5. กรณีเป็นคำถามเกี่ยวกับ Programming เช่น VBA, VB.Net, C#, SQL ฯลฯ ต้องลองเขียนมาเองก่อนเสมอ ถามเฉพาะที่ติดปัญหา ระบุ Module, Procedure ที่ติดปัญหาให้ชัดเจน กรุณาโพสต์ Code ให้แสดงเป็น Code คือเปิดด้วย [code] และปิดด้วย [/code] ตัวอย่างเช่น [code]dim r as range[/code] เพื่อให้แตกต่างจากข้อความทั่วไป สะดวกในการอ่านและทดสอบ (คลิกเพื่อดูตัวอย่าง)
  6. กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
wisit
Bronze
Bronze
Posts: 348
Joined: Sun Sep 25, 2011 9:42 pm
Excel Ver: 2019

คีย์ตัวเลข 2 หลัก โดยไม่ต้องกด Enter ใน VBA

#1

Post by wisit »

อาจารย์ครับ รบกวนอาจารย์ ช่วยแนะนำวิธีในการคีย์ตัวเลข 0-9 2 หลัก โดยไม่ต้องกด Enter มันจะเลื่อนลงมาข้างล่างโดยอัตโนมัติ สมมุติ ผมคีย์ตัวเลข 12 ใน A1 มันจะเด้งลงมา A2 ให้เราคีย์ค่าตัวเลขต่อไป เมื่อคีย์ตัวเลข 47 ใน A2 มันจะเด้งลงมา A3 เป็นอย่างนี้เรื่อยไปครับอาจารย์
ผมไ้ด้ทดลองเขียนเองบ้าง และให้เพื่อนช่วยเขียน VBA ให้ (เพราะผมเพิ่งเริ่มหัดเขียนครับ) ผมได้ทดลองกับเพื่อนแต่ทำยังไงก็ไม่สามารถทำให้มันเด้งลงข้างล่างได้ ต้องกด Enter รบกวนอาจารย์ช่วยชี้แนะด้วยครับ

Code: Select all

Private Sub Worksheet_Change(ByVal Target As Range)
'MsgBox Len(Target.Text)
'MsgBox Asc(Target.Text)
If Len(Target.Text) > 0 Then
    If Asc(Target.Text) < 48 Then
        MsgBox "Character invalid"
        Cells(Target.Row, 1).Select
        Cells(Target.Row, 1).Clear
    ElseIf Asc(Target.Text) > 57 Then
        MsgBox "Character invalid"
        Cells(Target.Row, 1).Select
        Cells(Target.Row, 1).Clear
    ElseIf Len(Target.Text) = 1 Then
        MsgBox "Len Lesthen"
        Cells(Target.Row, 1).Select
        Cells(Target.Row, 1).Clear
    ElseIf Len(Target.Text) > 2 Then
        MsgBox "Len More"
        Cells(Target.Row, 1).Select
        Cells(Target.Row, 1).Clear
    ElseIf Target.Column > 1 Then
        Cells(Target.Row + 1, 1).Select
    End If
End If

End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    'Range("A1").Select
    'ActiveCell.FormulaR1C1 = "MyJan"
End Sub
Last edited by snasui on Sat Dec 24, 2011 8:03 pm, edited 1 time in total.
Reason: ปรับ Code VBA ให้แสดงเป็น Code
User avatar
snasui
Site Admin
Site Admin
Posts: 31191
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: คีย์ตัวเลข 2 หลัก โดยไม่ต้องกด Enter ใน VBA

#2

Post by snasui »

:D ลองส่งไฟล์ตัวอย่างมาด้วยครับ
wisit
Bronze
Bronze
Posts: 348
Joined: Sun Sep 25, 2011 9:42 pm
Excel Ver: 2019

Re: คีย์ตัวเลข 2 หลัก โดยไม่ต้องกด Enter ใน VBA

#3

Post by wisit »

อาจารย์ครับ ไฟล์ที่ผมแนบมาคือ คอลัมน์ A จะเป็นรหัสสินค้า ที่เราจะต้องคีย์ โดยคีย์เพียง 2 หลัก โปรแกรมก็จะเด้งลงมาข้างล่าง (โดยไม่ต้องกดเอ็นเตอร์) แต่ปัญหาของผมยังมีอีกปัญหาหนึ่งครับ คือ เมื่อเราจะให้ VBA รัน เราจะต้องก๊อปปี้โค้ิด ในคอลัมน์ C ลงใน VBA โปรแกรมถึงจะทำงาน ซึ่งผมก็ไม่ทราบว่าเป็นเพราะเหตุใด หรือผมทำขั้นตอนอะไรผิดหรือเปล่าไม่ รบกวนอาจารย์ช่วยชี้แนะด้วยครับ
Attachments
Book1.xls
(42 KiB) Downloaded 24 times
User avatar
snasui
Site Admin
Site Admin
Posts: 31191
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: คีย์ตัวเลข 2 หลัก โดยไม่ต้องกด Enter ใน VBA

#4

Post by snasui »

:D ลองตามนี้ครับ

ในชีท MyJan ให้ยกเลิก Code ไปก่อน จากนั้นนำ Code ด้านล่างไปวางใน Module ปกติ

Code: Select all

Option Explicit

Dim i As Long

Sub KeyEventOn()
    For i = 48 To 57
        Application.OnKey "{" & i & "}", "'EnterToNextCell """ & i & """'"
    Next
End Sub

Sub KeyEventOff()
    For i = 47 To 57
        Application.OnKey "{" & i & "}"
    Next
End Sub

Sub EnterToNextCell(ByVal KeyCode As Long)
    Dim strText As String
    If Not TypeOf Selection Is Range Then Exit Sub
    strText = Selection.Value & Chr(KeyCode)
    Selection.Value = strText
    If Len(Selection) >= 2 Then
        Application.SendKeys "{ENTER}"
    End If
End Sub
ก่อนการคีย์ข้อมูลให้เรียกใช้ KeyEventOn ขึ้นมาก่อน โดยเรียกเพียงครั้งเดียว จากนั้นทำการคีย์ข้อมูลตามปกติ ก่อนปิดไฟล์ให้เลือก KeyEventOff ด้วยครับ
wisit
Bronze
Bronze
Posts: 348
Joined: Sun Sep 25, 2011 9:42 pm
Excel Ver: 2019

Re: คีย์ตัวเลข 2 หลัก โดยไม่ต้องกด Enter ใน VBA

#5

Post by wisit »

:D ขอบคุณครับอาจารย์ ที่ตอบคำถามข้อสงสัยผมได้รวดเร็วทันใจ เดี๋ยวผมจะลองทำดู ติดขัดยังไงจะรบกวนอาจารย์อีกครับ :mrgreen:
wisit
Bronze
Bronze
Posts: 348
Joined: Sun Sep 25, 2011 9:42 pm
Excel Ver: 2019

Re: คีย์ตัวเลข 2 หลัก โดยไม่ต้องกด Enter ใน VBA

#6

Post by wisit »

:( อาจารย์ครับ ผมลองทำดูตามขั้นตอนที่อาจารย์บอก แต่คีย์ตัวเลข 2 หลัก เช่น 48 แล้วโปรแกรมมันไม่ยอดเด้งลงข้างล่าง หรือผมทำผิดขั้นตอนหรือเปล่า (เพิ่งเริ่มหัดทำ VBA) รบกวนอาจารย์ช่วยชี้เแนะด้วยครับ ผมได้แนบไฟล์ที่ทำตามที่อาจารย์แนะนำมาด้วยครับ
Attachments
Book1.xls
(43.5 KiB) Downloaded 6 times
User avatar
snasui
Site Admin
Site Admin
Posts: 31191
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: คีย์ตัวเลข 2 หลัก โดยไม่ต้องกด Enter ใน VBA

#7

Post by snasui »

:D วาง Code ผิดที่ครับ ลองอ่านทบทวนที่ผมแนะนำอย่างช้า ๆ ครับ
User avatar
bank9597
Guru
Guru
Posts: 3868
Joined: Wed Aug 17, 2011 11:49 am

Re: คีย์ตัวเลข 2 หลัก โดยไม่ต้องกด Enter ใน VBA

#8

Post by bank9597 »

:D น่าสนใจมากครับ
Forum Rules
  1. อย่าใช้ภาษาแชทในการตอบ-ถาม
  2. ตั้งชื่อกระทู้ให้สื่อถึงปัญหาและไม่เจาะจงตัวผู้ตอบ
  3. ให้อธิบายปัญหาและระบุคำตอบที่ต้องการมาในฟอรัม
  4. ควรแนบไฟล์ตัวอย่างมาที่ฟอรั่ม
  5. หากใช้ VBA ให้ลองเขียนมาเองก่อนเสมอ
  6. แจ้งผลการใช้งานทุกครั้งเมื่อได้รับคำตอบ
wisit
Bronze
Bronze
Posts: 348
Joined: Sun Sep 25, 2011 9:42 pm
Excel Ver: 2019

Re: คีย์ตัวเลข 2 หลัก โดยไม่ต้องกด Enter ใน VBA

#9

Post by wisit »

:tt: ขอบคุณครับอาจารย์ เดี๋ยวผมจะลองอ่านคำแนะนำอีกครั้งครับ :mrgreen:
wisit
Bronze
Bronze
Posts: 348
Joined: Sun Sep 25, 2011 9:42 pm
Excel Ver: 2019

Re: คีย์ตัวเลข 2 หลัก โดยไม่ต้องกด Enter ใน VBA

#10

Post by wisit »

:( อาจารย์ครับผมลองทำใหม่ โดยเปิดโปรแกรม Excel ใหม่ แล้วก๊อปปี้ โค้ดของอาจารย์ลงใน Module ก่อนการคีย์ข้อมูลผมได้เรียกใช้ KeyEventOn แล้ว แต่เวลาคีย์มันก็ยังไม่เด้งอีกครับ ผมลองทำยังไงก็ไม่ได้ รบกวนอาจารย์ช่วยอธิบายขั้นตอนหน่อยครับ เพราะผมเพิ่งเริ่มหัดเขียน VBA :mrgreen: (ผมได้แนบไฟล์มาให้อาจารย์ช่วยดูอีกครั้งว่าผมวางผิดที่หรือเปล่าครับอาจารย์)
Attachments
Book1.xls
(24 KiB) Downloaded 18 times
User avatar
snasui
Site Admin
Site Admin
Posts: 31191
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: คีย์ตัวเลข 2 หลัก โดยไม่ต้องกด Enter ใน VBA

#11

Post by snasui »

:lol: ผมทดสอบแล้วไม่มีปัญหาใดครับ

จากไฟล์ที่แนบมา ลองตามนี้ครับ
  1. เข้าเมนู Tools > Macro > Macro > เลือก KeyEventOn > Run
  2. ที่ A2 เป็นต้นไปทดสอบคีย์ตัวเลขตามต้องการ (จะคีย์ที่เซลล์ใด ๆ ก็ได้)
wisit
Bronze
Bronze
Posts: 348
Joined: Sun Sep 25, 2011 9:42 pm
Excel Ver: 2019

Re: คีย์ตัวเลข 2 หลัก โดยไม่ต้องกด Enter ใน VBA

#12

Post by wisit »

:flw: อาจารย์ครับ ผมลองทำตามดูแต่ก็ไม่ได้ผล หรือว่าโปรแกรม Excel ผมเป็น 2003 จึงอาจทำให้รันแล้วไม่ได้ผล (อันนี้คิดเอาเองครับ) รบกวนอาจารย์อีกรอบครับ :mrgreen:
User avatar
snasui
Site Admin
Site Admin
Posts: 31191
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: คีย์ตัวเลข 2 หลัก โดยไม่ต้องกด Enter ใน VBA

#13

Post by snasui »

:lol: ตามความเห็นล่าสุดที่ผมตอบไปนั้น ผมได้ทดสอบด้วย Excel 2003 สังเกตการอธิบายเมนู Version หลัง ๆ จะมีเมนูไม่เหมือนกับที่อธิบายไป ลองทดสอบกับเครื่องอื่น ส่งให้เพื่อนทดสอบ ฯลฯ ครับ
wisit
Bronze
Bronze
Posts: 348
Joined: Sun Sep 25, 2011 9:42 pm
Excel Ver: 2019

Re: คีย์ตัวเลข 2 หลัก โดยไม่ต้องกด Enter ใน VBA

#14

Post by wisit »

:D ขอบคุณครับอาจารย์ ผมจะลองส่งให้เพื่อนทดสอบ หรือไม่ก็จะลองกับเครื่องอื่นแทน (ลืมบอกอาจารย์ว่า เครื่องผมบางครั้งก็มีปัญหา อาจเป็นเพราะสาเหตุนี้ก็เป็นได้) ต้องขอบพระคุณอาจารย์ที่ให้คำชี้แนะ ตอบข้อสงสัย และให้ความรู้แก่ผมเป็นอย่างมาก
wisit
Bronze
Bronze
Posts: 348
Joined: Sun Sep 25, 2011 9:42 pm
Excel Ver: 2019

Re: คีย์ตัวเลข 2 หลัก โดยไม่ต้องกด Enter ใน VBA

#15

Post by wisit »

อาจารย์ครับถ้าหากเราต้องการจะให้คอล์ลัมน์ C คีย์ตัวเลข 2 หลัก ส่วนคอล์ลัมน์ F ให้คีย์ตัวเลข 3 หลัก ส่วนคอล์ลัมน์อื่น ๆ คีย์ตัวเลขกี่หลักก็ได้ (คิด และปรึกษาเพื่อนแต่ไม่มีใครรู้เลย เพื่อนก็เพิ่งศึกษา VBA เหมือนผมเช่นกัน)
User avatar
snasui
Site Admin
Site Admin
Posts: 31191
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: คีย์ตัวเลข 2 หลัก โดยไม่ต้องกด Enter ใน VBA

#16

Post by snasui »

:D ที่ถามมานั้นใช้ Validation ทำได้ ไม่ต้องใช้ VBA ครับ
wisit
Bronze
Bronze
Posts: 348
Joined: Sun Sep 25, 2011 9:42 pm
Excel Ver: 2019

Re: คีย์ตัวเลข 2 หลัก โดยไม่ต้องกด Enter ใน VBA

#17

Post by wisit »

อาจารย์ครับต้องขอโทษอาจารย์ด้วยครับ ที่ผมลืมกล่าวนำ เนื่องจากการเขียน VBA ที่อาจารย์แนะนำมานั้น มันจะคลอบคลุมทุกคอล์ลัมน์ ผมต้องการให้คอล์ลัมน์ C คีย์ตัวเลข 2 หลัก ส่วนคอล์ลัมน์ F ให้คีย์ตัวเลข 3 หลัก ส่วนคอล์ลัมน์อื่น ๆ คีย์ตัวเลขกี่หลักก็ได้ ซึ่งโค้ดที่อาจารย์เขียนให้ดังนี้ครับ

Code: Select all

Option Explicit

Dim i As Long

Sub KeyEventOn()
    For i = 48 To 57
        Application.OnKey "{" & i & "}", "'EnterToNextCell """ & i & """'"
    Next
End Sub

Sub KeyEventOff()
    For i = 47 To 57
        Application.OnKey "{" & i & "}"
    Next
End Sub

Sub EnterToNextCell(ByVal KeyCode As Long)
    Dim strText As String
    If Not TypeOf Selection Is Range Then Exit Sub
    strText = Selection.Value & Chr(KeyCode)
    Selection.Value = strText
    If Len(Selection) >= 2 Then
        Application.SendKeys "{ENTER}"
    End If
End Sub
Last edited by snasui on Sat Dec 24, 2011 8:04 pm, edited 1 time in total.
Reason: ปรับ Code VBA ให้แสดงเป็น Code
User avatar
snasui
Site Admin
Site Admin
Posts: 31191
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: คีย์ตัวเลข 2 หลัก โดยไม่ต้องกด Enter ใน VBA

#18

Post by snasui »

:D ลองปรับ Code มาก่อนครับ ติดตรงไหนค่อยมาดูกันต่อ สำหรับ Code ที่ส่งมาเป็น Code เดิมที่เคยเขียนให้ไป ยังไม่มีการปรับใด ๆ ครับ
wisit
Bronze
Bronze
Posts: 348
Joined: Sun Sep 25, 2011 9:42 pm
Excel Ver: 2019

Re: คีย์ตัวเลข 2 หลัก โดยไม่ต้องกด Enter ใน VBA

#19

Post by wisit »

อาจารย์ครับผมได้ทำการกำหนดโค้ดคอลัมน์แล้วครับ ลองเทสท์ดูก็ใช้ได้ครับ แต่ดูวันยาว ๆ ยังไงไม่รู้ครับ ให้เพื่อนช่วยปรับให้สั้นกว่านี้ แต่เพื่อนบอกว่าทำไม่ได้เช่นกัน และรบกวนอาจารย์ในปัญหาเดิม ๆ ครับ เรื่องการคีย์โดยใช้แป้นพิมพ์ตัวเลข (ใช้แป้นพิมพ์นี้ คำสั่งใน VBA จะไม่ทำงาน) แต่ถ้าใช้แป้นพิมพ์ตัวเลขที่ใกล้ฟังก์ชั่น (คำสั่งใน VBA จะทำงาน) ซึ่งผมอยากใช้แป้นพิมพ์ตัวเลขมากกว่าและพอดีปรึกษากับเพื่อน เขาบอกว่าที่คีย์ในแป้นพิมพ์ตัวเลขไม่ได้เพราะคำสั่ง Chr(KeyCode) แต่เพื่อนบอกถ้าไม่ใช้คำสั่งนี้ก็ไม่รู้จะใช้คำสั่งไหนแล้ว และที่อาจารย์แนะนำให้สร้างฟอร์ม เพื่อนบอกว่าจะต้องเขียนโค้ดเพิ่ม ซึ่งผมก็ไม่ค่อยจะมีความรู้ในเรื่องนี้ซักเท่าไหร่ครับ รบกวนอาจารย์ช่วยแนะนำด้วยครับ :D (ผมได้แนบไฟล์ตัวอย่างมาด้วยครับ) ส่วนโค้ดที่ทำดังนี้ครับ :ard:

Code: Select all

Option Explicit

Dim i As Long

Sub KeyEventOn()
    For i = 48 To 57
        Application.OnKey "{" & i & "}", "'EnterToNextCell """ & i & """'"
    Next
End Sub

Sub KeyEventOff()
    For i = 47 To 57
        Application.OnKey "{" & i & "}"
    Next
End Sub

Sub EnterToNextCell(ByVal KeyCode As Long)
    Dim strText As String
    If Not TypeOf Selection Is Range Then Exit Sub
    strText = Selection.Value & Chr(KeyCode)
    Selection.Value = strText
'MsgBox Chr(KeyCode) & Selection.Value
Select Case (Selection.Column)
    Case 1
        'MsgBox "1"
        If Len(Selection) >= 2 Then
            Application.SendKeys "{ENTER}"
        End If
    Case 2, 6
        'MsgBox "2"
         If Len(Selection) >= 3 Then
            Application.SendKeys "{ENTER}"
        End If
    Case 3
        'MsgBox "3"
         If Len(Selection) >= 2 Then
            Application.SendKeys "{ENTER}"
        End If
    Case 4
        'MsgBox "4"
         If Len(Selection) >= 3 Then
            Application.SendKeys "{ENTER}"
        End If
    Case 5
        'MsgBox "5"
         If Len(Selection) >= 4 Then
            Application.SendKeys "{ENTER}"
        End If
    Case Else
        If Len(Selection) >= 2 Then
            Application.SendKeys "{ENTER}"
        End If
    
 End Select
   
    'If Len(Selection) >= 2 Then
    '    Application.SendKeys "{ENTER}"
    'End If
End Sub
Attachments
Book1.xls
(32 KiB) Downloaded 10 times
Last edited by snasui on Sat Dec 24, 2011 8:04 pm, edited 1 time in total.
Reason: ปรับ Code VBA ให้แสดงเป็น Code
User avatar
snasui
Site Admin
Site Admin
Posts: 31191
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: คีย์ตัวเลข 2 หลัก โดยไม่ต้องกด Enter ใน VBA

#20

Post by snasui »

wisit wrote:อาจารย์ครับถ้าหากเราต้องการจะให้คอล์ลัมน์ C คีย์ตัวเลข 2 หลัก ส่วนคอล์ลัมน์ F ให้คีย์ตัวเลข 3 หลัก ส่วนคอล์ลัมน์อื่น ๆ คีย์ตัวเลขกี่หลักก็ได้ (คิด และปรึกษาเพื่อนแต่ไม่มีใครรู้เลย เพื่อนก็เพิ่งศึกษา VBA เหมือนผมเช่นกัน)
จากด้านบน สามารถปรับ Code เป็นตามด้านล่างครับ

Code: Select all

Option Explicit

Dim i As Long

Sub KeyEventOn()
    For i = 48 To 57
        Application.OnKey "{" & i & "}", "'EnterToNextCell """ & i & """'"
    Next
End Sub

Sub KeyEventOff()
    For i = 47 To 57
        Application.OnKey "{" & i & "}"
    Next
End Sub

Sub EnterToNextCell(ByVal KeyCode As Long)
    Dim strText As String
    If Not TypeOf Selection Is Range Then Exit Sub
    strText = Selection.Value & Chr(KeyCode)
    Selection.Value = strText
    Select Case Selection.Column
        Case 3
            'MsgBox "2"
             If Len(Selection) >= 2 Then
                Application.SendKeys "{ENTER}"
            End If
        Case 6
            'MsgBox "5"
             If Len(Selection) >= 3 Then
                Application.SendKeys "{ENTER}"
            End If
     End Select
End Sub
สำหรับการคีย์ตัวเลขด้วย Keypad ให้ช่วยเก็บ Character code โดยคลิกปุ่ม Button1 แล้วใช้แป้น Keypad คีย์ตัวเลขแต่ละตัว และดู Message Box ว่าแสดงค่า Character code เป็นเลขใด แจ้งมาในฟอรัมอีกรอบครับ

สำหรับการวาง Code VBA ให้เป็น Code จะได้ดูง่าย ๆ ลองดูจากกระทู้นี้ครับ viewtopic.php?f=6&t=1187 และ viewtopic.php?f=3&t=1354
Attachments
Book1 (13).xls
(52 KiB) Downloaded 24 times
Post Reply