Page 1 of 1

ขอวิธีให้ textbox แสดงค่าต่างๆ เช่น วันที่, ทศนิยม ครับ

Posted: Wed Jul 17, 2013 2:20 pm
by sdmania
สวัสดีครับอาจารย์ และทุกท่านที่เข้ามาอ่านกระทู้นี้ครับ

ผมใช้ excel 2003+เมนูภาษาไทยครับ

ผมแนบไฟล์ตัวอย่าง อยู่ที่ sheet1ครับ

ในเซล d1 ผมจัดรูปแบบcellโดยใช้ กำหนดเอง--> [$-41E]d mmmm yyyy ทำให้ค่าในเซลรับรูปแบบวันที่แบบ พ.ศ.ได้ครับ

ต่อมาผมลองหัดใช้ textbox(ตัวที่ดึงมาจาก โหมดออกแบบ)ครับ ผมเปิด property ---> linked cell ผมพิมพ์ d1(เพื่อรับค่า-ส่งค่าที่ D1)

ปัญหา ผมไม่สามารถแสดงค่าวันที่ใน textbox ได้ครับ รบกวนแนะนำวิธีให้ด้วยครับ


ขอถามในกระทู้นี้ต่อเนื่องเลยนะครับ
ปัญหาการแสดงค่าของTextbox หากเราจะกำหนดให้ค่าที่รับมาจากcell ส่งไปให้ textboxแสดงผล ค่าทศนิยม2ตำแหน่ง หรือการใส่ลูกน้ำหลักพัน ต้องทำอย่างไรบ้างครับรบกวนขอตัวอย่างด้วยครับ

Re: ขอวิธีให้ textbox แสดงค่าต่างๆ เช่น วันที่, ทศนิยม ครับ

Posted: Wed Jul 17, 2013 2:35 pm
by snasui
:D ต้องกำหนดด้วย VBA ซึ่งต้องลองเขียนมาก่อน ติดตรงไหนแล้วค่อยถามกันตามกฎข้อ 5 ด้านบนครับ

Re: ขอวิธีให้ textbox แสดงค่าต่างๆ เช่น วันที่, ทศนิยม ครับ

Posted: Wed Jul 17, 2013 3:14 pm
by sdmania
แหะๆ ขอโทษครับ
ผมเปิด โหมดออกแบบ(ที่เราใช้ฟอร์มของ vbe ได้น่ะครับ)
เลือก textbox
ผมคลิกขวาที่ตัวtextbox เลือกคุณสมบัติ( เมนูภาษาอังกฤษน่าจะ property ครับ) เลือก linkCell ผมเลือกให้ไปที่D1 ครับ
ปิดโหมดออกแบบ


จากนั้นจึง เปิดหน้าต่าง vbe ปุ่ม alt+f11 ครับ

Code: Select all

Private Sub TextBox2_Change()
[d1].Value = TextBox2.Value
End Sub
ให้ textbox รับค่าcell d1มาที่textboxเพื่อโชว์ค่าได้ และเมื่อเราพิมพ์ค่าใดๆที่textbox ค่าในcell D1 ก็จะเปลี่ยนตามครับ
(ผมลองไปหาใน google เค้าบอกให้ใช้ format ผมก็เอามาใช้ไม่เป็นน่ะครับ คือไม่รู้ว่าต้องเอาอะไรวางตรงไหน หรือใส่ลูกน้ำตอนใดน่ะครับ) แหะๆ :(


ตอนแสดงผลใน sheet1
เซลd1 ผมใส่ค่า 12-6-2556 ในเซลd1จะขึ้นว่า 12 มิถุนายน 2556
แต่ใน textbox( ชื่อ textbox2 ) ขึ้นค่า 239033 ครับ

เป้าหมายคือ อยากให้ข้อมูลใน textbox ขึ้นเป็นวันที่ "12 มิถุนายน 2556 "เหมือนในเซล์d1 ครับ
และ เราสามารถพิมพ์ในtextbox ให้เป็นวันที่อื่น เช่น เดิมเป็นวันที่12 มิถุนายน 2556 เราพิมพ์ลงไปในtextbox ว่า"12-7-2556"
เซลล์D1 ก็รับค่าแสดงเป็น "12 กรกฏาคม 2556"ได้ด้วยครับ ตั้งใจจะให้พิมพ์แก้ไขที่textbox เซลD1ก็เปลี่ยนค่าตามtextboxได้ด้วยครับ

ทำอย่างไรดีครับ

Re: ขอวิธีให้ textbox แสดงค่าต่างๆ เช่น วันที่, ทศนิยม ครับ

Posted: Wed Jul 17, 2013 5:20 pm
by snasui
:D ในกรณี้นี้ผมทราบตั้งแต่แรกครับว่าที่ทำมาแล้วนั้นทำมาด้วยวิธีการใดและทราบว่าต้องการจะทำอะไรเช่นกัน :lol:

การจะแปลงค่าที่คีย์เป็นวันที่ให้มาแสดงใน TextBox หรือ Object อื่น ให้เป็น Format แบบในเซลล์นั้นต้องใช้ VBA เข้าไปกำหนด Format ของ Object นั้นครับ

ยกตัวอย่างเช่น TextBox1.Text = Format(TextBox1."dd-mmmm-yyyy") เป็นต้น

Re: ขอวิธีให้ textbox แสดงค่าต่างๆ เช่น วันที่, ทศนิยม ครับ

Posted: Thu Jul 18, 2013 10:12 am
by sdmania
ขออภัยครับ ผมปล่อยไก่อีกแล้ว :rz:


ผมไปลองทำมาใหม่ ให้อาจารย์ช่วยชี้แนะครับ

Code: Select all

Private Sub TextBox2_Change_01()
TextBox2.Text = Format(TextBox2, "[$-41e]d mmmm yyyy")

คำถามครับ
1.ในตัวcode textbox2_change_01 นั้น ผมนึกว่า textbox จะแสดงค่าเป็นวันที่ แบบ พ.ศ. แต่ไม่ได้ครับ ขออาจารย์ชี้แนะด้วยครับ มันเกินมา +543 เสมอครับ

2.ตัวtextbox2 ตอนนี้เมื่อผมจะเข้าไปกรอกข้อมูลเพิ่มเติม ทำไมมันเอาไปต่อกับวันที่เดิมครับ ทำอย่างไรให้วิธีกรอกข้อมูล (ของใหม่มา ของเก่าหายไป)ครับ รบกวนด้วยครับ

Re: ขอวิธีให้ textbox แสดงค่าต่างๆ เช่น วันที่, ทศนิยม ครับ

Posted: Thu Jul 18, 2013 11:49 am
by snasui
:D การคีย์ตัวเลขในเซลล์ให้คีย์เป็น ค.ศ. เท่านั้นและเป็นเช่นนี้เสมอ เราไม่คีย์ตัวเลขวันเดือนปีเป็น พ.ศ. เพราะจะขาดความสะดวกในการนำไปใช้ครับ

Re: ขอวิธีให้ textbox แสดงค่าต่างๆ เช่น วันที่, ทศนิยม ครับ

Posted: Thu Jul 18, 2013 4:28 pm
by sdmania
ขอขอบคุณอาจารย์ครับ
ผมขอไปลองหาวิธี ตอนนี้คงใช้ ว ด ป แบบ ค.ศ. ก่อนครับ คงแยกเซล แล้วถ้าติดปัญหาตอนรวม ว ดป คงจะมารบกวนอาจารย์ครับ วันนี้ขอขอบคุณครับผม

Re: ขอวิธีให้ textbox แสดงค่าต่างๆ เช่น วันที่, ทศนิยม ครับ

Posted: Thu Jul 18, 2013 5:05 pm
by snasui
:D ลองเพิ่ม Code นี้เข้าไปช่วยปรับ Format ใน TextBox2 ดูครับ

Code: Select all

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim t As String
    If Target.Address = [d1].Address Then
        t = Application.Text([d1], "[$-41e]d mmmm yyyy")
        TextBox2.Text = t
    End If
End Sub