Announcement

Collapse

ยินดีต้อนรับสู่ Excel Expert Training Forum

กฏกติกาของฟอรัม: แจ้งชื่อและนามสกุลจริงในการสมัครสมาชิก - ตั้งชื่อกระทู้ให้ตรงกับปัญหาที่ถาม - เขียนอธิบายคำถามทั้งในตัวกระทู้และในแฟ้มแนบ - ห้ามใช้คำว่า อ่ะ คับ คำผวน - ตั้งชื่อแฟ้มเป็นภาษาอังกฤษให้สื่อถึงปัญหา - อย่าระบุชื่อให้คนใดเป็นผู้ตอบ - งดให้ความร่วมมือหรือช่วยกระทู้ที่ละเมิดกฏของฟอรัม
See more
See less

ถ้าจะนับตัวอักษรแบบรีลไทม์ในขณะที่กำลังพิมพ์ได้หรือไม่

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • ถ้าจะนับตัวอักษรแบบรีลไทม์ในขณะที่กำลังพิมพ์ได้หรือไม่

    ผมมีเซลที่ต้องให้ยูสเซอร์กรอกคอมเม้นท์ โดยกำหนดจำนวนตัวอักษรสูงสุดเอาไว้ ซึ่งเป็นการควบคุมการใช้ข้อความให้กระทัดรัดด้วย แต่ยูสเซอร์คอมเม้นท์กลับมาว่า อยากให้ผมทำตัวนับข้อความที่นับไปพร้อมๆกับการพิมพ์ไปเลย ไม่ใช่มานับตอนที่พิมพ์เสร็จแล้ว(ผมใช้สูตร len) เพราะบางทีต้องเสียเวลากับการคิดประโยคใหม่หลายๆครั้งจนกว่าจะพอดี เป็นไปได้หรือไม่ครับ ขอบคุณครับผม

  • #2
    ใน spreadsheet ไม่ได้แน่
    แต่ถ้าใช้วิธีพิมพ์ text ใน textbox แล้วใช้ VBA นับ น่าจะทำได้ครับ
    เดี๋ยวหาเวลาลองก่อน

    Comment


    • #3
      Private Sub TextBox1_Change()
      Range("A1").Value = "Length " & Len(TextBox1.Text) & " / 30"
      End Sub

      สร้าง textbox1 สำหรับกรอกข้อมูล แค่นี้ก็ได้แล้วครับ

      Comment


      • #4
        อยู่ที่แนวคิดจริงๆครับ ขอบคุณท่าน Vajaraphol มากๆครับผม
        Attached Files

        Comment


        • #5
          นำของคุณ Vajaraphol มาต่อยอดค่ะ ทำเสมือนจำกัดจำนวนตัวอักษรขณะ key ใน Cell
          Attached Files

          Comment


          • อรวีร์
            อรวีร์ commented
            Editing a comment
            ลืมไป ย้าย .Visible = True ไปไว้ก่อนบรรทัด End With ดีกว่าค่ะ

        • #6
          ผมเปิดไฟล์ของแนบไม่ได้ครับ เป็นทั้ง firefox และ chrome กลายเป็นเลข 1 (หรือตัว I)อันเดียวครับผม
          Attached Files

          Comment


        • #7
          ผมเปิดได้ปกตินะครับ ใช้ google chrome
          Attached Files

          Comment


          • #8
            ขอบคุณครับ ของผมบางครั้งก็เปิดได้ บางครั้งก็ไม่ได้ ยังไม่พบว่าเกิดจากอะไร
            แต่อยากจะบอกว่า ของคุณอรวีร์นี่"เนียน"จริงๆนะครับ แทบจับไม่ได้เลยว่าเกิดอะไรในขณะที่พิมพ์ข้อมูลบ้าง ผมไปดัดแปลงโค้ดเล็กน้อยและเปลี่ยนตำแหน่งเซลก็เข้ากับงานผมได้ดี ผมได้ใช้งานทั้งแบบของคุณ Vajaraphol และของคุณอรวีร์เลยครับ แต่ถ้าคุณอรวีร์มีเวลา รบกวนเฉลยเป็นสเต็ป 1, 2, 3 ... ให้สักนิดนะครับ ตอนนี้เอาไปดัดแปลงได้ แต่ยังวนหาทางตั้งแต่เริ่มไม่พบครับผม

            Comment


            • #9
              อรวีร์ใช้วิธี Insert TextBox จาก ActiveX Controls มันจะถูกตั้งชื่อเองเป็น TextBox1
              มันจะเข้าสู่ Design Mode เอง
              เรา Click ปุ่มขวาที่ TextBox1 นั้น แล้วเลือก Properties เพื่อกำหนดคุณสมบัติพวกสี เส้นกรอบ..
              สิ่งสำคัญควรกำหนด Selection Margin เป็น False
              เสร็จแล้ว Click ปุ่มขวาที่ TextBox1 อีกครั้งเลือก View Code แล้วเขียน Code ดังนี้

              Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
              Select Case KeyCode
              Case 38
              ActiveCell.Offset(-1, 0).Select
              Case 40, 13
              ActiveCell.Offset(1, 0).Select
              End Select
              End Sub

              Private Sub Worksheet_SelectionChange(ByVal Target As Range)
              If TextBox1.Visible Then TextBox1.Visible = False
              If Target.Count > 1 Then Exit Sub
              Select Case Target.Address
              Case "$C$7": Show_Textbox1 5
              Case "$C$9": Show_Textbox1 10
              End Select
              End Sub

              Sub Show_Textbox1(mx)
              With TextBox1
              .Left = ActiveCell.Left
              .Top = ActiveCell.Top
              .Width = ActiveCell.Width
              .Height = ActiveCell.Height
              .LinkedCell = ActiveCell.Address
              .Activate
              .MaxLength = mx
              .Visible = True
              End With
              End Sub

              Comment


              • อรวีร์
                อรวีร์ commented
                Editing a comment
                จาก Code จะเห็นว่าเมื่อ SelectionChange แล้ว ActiveCell ไปที่ C7 หรือ C9 จะแสดง TextBox1 ที่ Cell นั้นๆพร้อมปรับขนาด+ตำแหน่งให้ครอบทับ Cell นั้นพอดี และกำหนด MaxLength ตามต้องการ
                ถ้า ActiveCell อยู่ที่อื่น จะซ่อน TextBox1

            • #10
              เนียนๆตามอาจารย์ไปได้สมบูรณ์ละครับ ขอบคุณมากๆครับผม
              Attached Files

              Comment

              Working...
              X