Page 1 of 1

ต้องการแปลงตัวเลขที่ได้จาก TEXTBOX

Posted: Fri Aug 30, 2013 2:08 pm
by teclub2006
เรียนผู้เชี่ยวชาญ ช่วยแนะนำครับ

พอดีว่าผมมีความต้องการในการกำหนดให้ตัวเลขที่ได้รับจาก Textbox ที่เป็นข้อความให้เป็นตัวเลขปกติครับ

ขอคำชี้แนะครับ

ข้อที่สองพอดีว่าผมเริ่มเขียน VBA นะครับ อยากได้คำแนะนำ เพราะว่าผมก็มีไฟล์ค่อนข้างหลายไฟล์ที่ทำตามความเข้าใจของตนเอง จึงอยากให้ผู้รู้ช่วยติชมผลงาน ไม่ทราบว่าผมสามารถนำผลงานมาแสดงได้ที่ไหนได้บ้างครับ

ขอบคุณล่วงหน้าครับ

หากผิดพลาดประการใดต้องขออภัย ไว้ ณ ที่นี้ด้วยครับ :cp:

Re: ต้องการแปลงตัวเลขที่ได้จาก TEXTBOX

Posted: Fri Aug 30, 2013 3:28 pm
by cannoi
ลองเปลี่ยนบรรทัดนี้ดูเผื่อได้

Code: Select all

Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlMultiply, _
        SkipBlanks:=False, Transpose:=False

Re: ต้องการแปลงตัวเลขที่ได้จาก TEXTBOX

Posted: Fri Aug 30, 2013 4:30 pm
by niwat2811
ลองแบบนี้ว่าใช้ได้ไหมครับ

Code: Select all

Sub test1()
Dim rt As Range
Set rt = Sheets("Sheet1").Range("B" & Rows.Count).End(xlUp).Offset(1, 0)
    rt = Sheets("Sheet1").OLEObjects("TextBox1").Object.Text
    rt.HorizontalAlignment = xlCenter
    rt.Offset(0, 1) = Sheets("Sheet1").OLEObjects("TextBox2").Object.Text
    rt.Offset(0, 1).HorizontalAlignment = xlCenter
    If Range("A12") = "" Then
        Range("A12") = 1
        Else
        rt.Offset(0, -1) = rt.Offset(-1, -1) + 1
    End If
        With rt.Offset(0, -1).Resize(1, 3)
        .NumberFormat = "0"
        .HorizontalAlignment = xlCenter
        .Borders.LineStyle = xlContinuous
    End With
End Sub

Re: ต้องการแปลงตัวเลขที่ได้จาก TEXTBOX

Posted: Sat Aug 31, 2013 8:37 am
by teclub2006
niwat2811 wrote:ลองแบบนี้ว่าใช้ได้ไหมครับ

Code: Select all

Sub test1()
Dim rt As Range
Set rt = Sheets("Sheet1").Range("B" & Rows.Count).End(xlUp).Offset(1, 0)
    rt = Sheets("Sheet1").OLEObjects("TextBox1").Object.Text
    rt.HorizontalAlignment = xlCenter
    rt.Offset(0, 1) = Sheets("Sheet1").OLEObjects("TextBox2").Object.Text
    rt.Offset(0, 1).HorizontalAlignment = xlCenter
    If Range("A12") = "" Then
        Range("A12") = 1
        Else
        rt.Offset(0, -1) = rt.Offset(-1, -1) + 1
    End If
        With rt.Offset(0, -1).Resize(1, 3)
        .NumberFormat = "0"
        .HorizontalAlignment = xlCenter
        .Borders.LineStyle = xlContinuous
    End With
End Sub

ขอบคุณครับ แต่จะสะดวกไหมครับถ้าผมให้ช่วยอธิบายส่วนสำคัญของโค้ตนี้ครับ

Re: ต้องการแปลงตัวเลขที่ได้จาก TEXTBOX

Posted: Sat Aug 31, 2013 10:35 am
by snasui
:D เราสามารถติดตามการทำงานของ Code ได้เอง สงสัยตรงส่วนไหนแล้วค่อยถามมาดีกว่าครับ คำว่าส่วนสำคัญของ Code นั้น โดยหลักจะต้องสำคัญทุกบรรทัด ถ้าไม่สำคัญหรือไม่จำเป็นเราจะไม่เขียนลงไปครับ

สำหรับการติดตามการทำงานของ Code ให้เปิด Excel และ VBE ขึั้นมาพร้อมกันแล้วแบ่งหน้าจอให้เห็นเป็น 2 โปรแกรมคือ Excel และ VBE เพื่อที่จะได้เห็นว่า Code ใน VBE บรรทัดใดแสดงผลใน Excel เป็นอย่างไร จากนั้นให้คลิกที่ VBE แล้วกดแป้น F8 ซ้ำ ๆ เพื่อ Run Code ทีละ Step เมื่อ Run แล้วสังเกตดูการเปลี่ยนแปลงใน Excel

หากสงสัย Statement ใดค่อยถามกันแต่ไม่ควรให้แปลทุกบรรทัด (แต่ไม่ได้เป็นข้อห้ามหากท่านใดประสงค์จะแปลเพื่อเป็นวิทยาทาน) เนื่องจากการใช้งาน VBA ผู้ใช้จะต้องศึกษาเป็นเบื้องต้นมาด้วยตนเองก่อนครับ