: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

ต้องการปัดจุดทศนิยมด้วย VBA

ฟอรัมถาม-ตอบปัญหาการใช้งาน MS Excel and 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. กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
kio2002
Member
Member
Posts: 177
Joined: Thu Sep 20, 2012 8:40 am

ต้องการปัดจุดทศนิยมด้วย VBA

#1

Post by kio2002 »

เรียนสมาชิกทุกท่าน
ผมต้องการปัดจุดทศนิยมให้เหลือแค่2ตำแหน่ง ไม่ว่าจุดทศนิยมจะมีกี่ตำแหน่งก็ตาม
สมมุติพิมพ์ตัวเลขที่เซลล์ G3 = 25.617 แล้วให้ปัดเหลือ 25.61 โดยจุดทศนิยมตัวที่3จะเป็นเลขอะไรก็ตาม ก็จะให้ปัดทิ้งทั้งหมด
เซลล์ที่กำหนดไว้ G3 และ D13:D44
ผมลองเอา Application.WorksheetFunction มาใช้แล้วแต่ไม่ได้ผลครับ หรือสมาชิกมี code ตัวอย่างไหมครับ จะลองเอามาประยุกต์ใช้ดู
code อยู่ที่ sheet1 ครับ

Code: Select all

Private Sub Worksheet_Change(ByVal Target As Range)
        If Target.Address = Range("g3").Address Then
            If Range("g3").Value <> "" Then
                Application.WorksheetFunction.Round(Range("g3"), 2).Value
            End If
        End If
            
        If Not Intersect(Target, Me.Range("d13:d44")) Is Nothing Then
            If Target.Value <> "" Then
                Application.WorksheetFunction.Round(Target, 2).Value
            End If
        End If
End Sub
ขอบคุณครับ
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 30758
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: ต้องการปัดจุดทศนิยมด้วย VBA

#2

Post by snasui »

:D ตัวอย่างการปรับ Code ครับ

Code: Select all

Private Sub Worksheet_Change(ByVal Target As Range)
    Application.EnableEvents = False
        If Target.Address = Range("g3").Address Then
            If Target.Value <> "" Then
                Target.Value = VBA.Round(Range("g3").Value, 4)
            End If
        End If
            
        If Not Intersect(Target, Me.Range("d13:d44")) Is Nothing Then
            If Target.Value <> "" Then
                Target.Value = VBA.Round(Target, 4).Value
            End If
        End If
    Application.EnableEvents = True
End Sub
สังเกตว่าตัวเลขใน G3 มีรูปแบบเป็น % หมายความว่าถูกหารด้วย 100 มาแล้ว ถ้าต้องการให้แสดงทศนิยม 2 ตำแหน่งจะต้องเพิ่มตำแหน่งไปอีก 2 ให้กลายเป็น 4 ตำแหน่ง เมื่อแปลงกลับมาแสดงผลแบบทศนิยมจะกลายเป็น 2 ตำแหน่งครับ
kio2002
Member
Member
Posts: 177
Joined: Thu Sep 20, 2012 8:40 am

Re: ต้องการปัดจุดทศนิยมด้วย VBA

#3

Post by kio2002 »

เรียนอาจารย์ snasui
ทดลองรันโค้ดแล้ว ที่เซลล์G3 ปัดทศนิยมตัวที่3ทิ้งให้ครับ (หากทศนิยมตัวที่3น้อยกว่า5)
แต่ติดตรงที่ กรณีทศนิยมตัวที่3 เป็นเลข5 เช่น 25.655 จะปัดทศนิยมตัวที่2ขึ้นเป็น 25.66
ตามที่ต้องการให้ปัดทิ้งไปเลย เป็น 25.65 ครับ
ได้ลองเปลี่ยนจาก round เป็น rounddawn แต่ใช้งานไม่ได้ครับ

ส่วนที่เซลล์ d13:d44 ไม่สามารถรันโค้ดได้ครับ

ขอบคุณครับ
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 30758
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: ต้องการปัดจุดทศนิยมด้วย VBA

#4

Post by snasui »

:D ตัวอย่างการปรับ Code ครับ

Code: Select all

'Other code
Target.Value = Application.WorksheetFunction.RoundDown(Range("g3").Value, 4)
'Other code
ลองปรับใช้กับ d13:d44 ภายใน Sub Procedure เดียวกันดูครับ

กรณีต้องการเปลี่ยนพร้อมกันหลายเซลล์จะใช้การ Loop เข้าไปในแต่ละเซลล์ ลองเขียนมาเองก่อน ติดตรงไหนค่อยถามกันต่อครับ
Post Reply