: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

ตัวเลขเกือบทั้งหมดในไฟล์เปลี่ยนรูปแบบเป็นวันที่เอง

ฟอรัมถาม-ตอบปัญหาการใช้งาน 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. กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
User avatar
DhitiBank
Gold
Gold
Posts: 1676
Joined: Mon Oct 15, 2012 12:07 am

ตัวเลขเกือบทั้งหมดในไฟล์เปลี่ยนรูปแบบเป็นวันที่เอง

#1

Post by DhitiBank »

สวัสดีอาจารย์และเพื่อนๆ ครับ

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

อาการแบบนี้พอจะระบุสาเหตุได้ไหมครับ จะได้หาทางป้องกันต่อไปครับ

ขอบคุณครับ

(ขออภัยที่ไม่ได้แนบไฟล์เพราะตอนนี้กำลังพยายามแก้รูปแบบกลับมาให้เหมือนเดิมเพื่อจะใช้งานก่อนครับ)
pb01.png
pb02.png
pb03.png
You do not have the required permissions to view the files attached to this post.
User avatar
DhitiBank
Gold
Gold
Posts: 1676
Joined: Mon Oct 15, 2012 12:07 am

Re: ตัวเลขเกือบทั้งหมดในไฟล์เปลี่ยนรูปแบบเป็นวันที่เอง

#2

Post by DhitiBank »

เพิ่มเติมครับ

ผมได้แนบไฟล์มาแล้วครับ
รหัสเปิดไฟล์คือ adMin (M ตัวใหญ่ครับ)
รหัสปลดล็อกชีทคือ sy;gikt (keyboard layout เลือกภาษาอังกฤษ แล้วพิมพ์ตามแป้นไทยว่า "หัวเราะ")
รหัสเข้าแก้ไข VBA คือ rklg;biNf (keyboard layout เลือกอังกฤษ แล้วพิมพ์ตามแป้นไทยว่า "พาสเวิร์ด")
รบกวนเปิดทดสอบหน่อยครับว่า เปิดเครื่องอื่นแล้ว รูปแบบตัวเลขส่วนใหญ่เป็นวันที่หรือไม่ เช่น
ชีท 1PC
เซลล์ B9 และเมื่อคีย์รหัสสินค้าในคอลัมน์ E ตั้งแต่แถวที่ 11 ลงไป จะมีรายละเอียดขึ้นที่คอลัมน์ A ถึง C ในแถวเดียวกัน แต่ที่เป็นตัวเลขจะขึ้นเป็นวันที่หมดเลย

ชีท STK และ Pro ผมแก้ไขไปแล้วเพราะต้องปริ้นท์ออกไปนับครับ (ก่อนหน้านี้พวกรหัสสินค้าเป็นวันที่หมดเลย)

ชีท Search
เวลาคีย์รหัสสินค้าที่เซลล์ B5 จะมีรายการสินค้ามาแสดงในตารางด้านล่าง ตรงรหัส กับ ชิ้นต่อหีบ รูปแบบตัวเลขกลายเป็นวันที่ครับ (ส่วนจำนวนที่อยู่ทางขวาจะแสดงปกติ เพราะกำหนด format ไว้ใน vba ครับ)

ชีท 3List
ตัวเลขก็เปลี่ยนเป็นวันที่หมดเลยในทุกตำแหน่ง

เท่าที่สังเกตคือ ตัวเลขที่แต่ก่อนกำหนดรูปแบบเป็นทั่วไป กับที่ไม่ได้กำหนดด้วย vba จะเปลี่ยนเป็นวันที่หมดเลยครับ สาเหตุเป็นมาจากอะไรครับ
You do not have the required permissions to view the files attached to this post.
User avatar
bank9597
Guru
Guru
Posts: 3868
Joined: Wed Aug 17, 2011 11:49 am

Re: ตัวเลขเกือบทั้งหมดในไฟล์เปลี่ยนรูปแบบเป็นวันที่เอง

#3

Post by bank9597 »

ผมโหลดไฟล์ออกมาไม่ได้ เนื่องจากอยู่บริษัท รอท่านอื่นมาช่วยดูอีกที หรือไม่ก็ช่วงเย็นครับ
Forum Rules
  1. อย่าใช้ภาษาแชทในการตอบ-ถาม
  2. ตั้งชื่อกระทู้ให้สื่อถึงปัญหาและไม่เจาะจงตัวผู้ตอบ
  3. ให้อธิบายปัญหาและระบุคำตอบที่ต้องการมาในฟอรัม
  4. ควรแนบไฟล์ตัวอย่างมาที่ฟอรั่ม
  5. หากใช้ VBA ให้ลองเขียนมาเองก่อนเสมอ
  6. แจ้งผลการใช้งานทุกครั้งเมื่อได้รับคำตอบ
User avatar
snasui
Site Admin
Site Admin
Posts: 30761
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: ตัวเลขเกือบทั้งหมดในไฟล์เปลี่ยนรูปแบบเป็นวันที่เอง

#4

Post by snasui »

:D หากไม่มี Code ใดทำการ Format ข้อมูลให้เป็นวันที่ ลองกำหนดทุกชีทให้เป็น General ดูอีกครั้งแล้วทดสอบดูผลว่ายังเปลียนกลับมาเป็นวันที่อีกหรือไม่ครบ
User avatar
DhitiBank
Gold
Gold
Posts: 1676
Joined: Mon Oct 15, 2012 12:07 am

Re: ตัวเลขเกือบทั้งหมดในไฟล์เปลี่ยนรูปแบบเป็นวันที่เอง

#5

Post by DhitiBank »

ขอบคุณอาจารย์และคุณ bank9597 มากครับ

ตอนนี้ผมไล่แก้ฟอร์แม็ตเป็นแบบที่เคยเป็นหมดแล้ว ส่วนวิธีที่อาจารย์แนะนำ ผมก็ลองแล้วครับ คือกำหนดส่วนที่มันเพี้ยนกลับเป็น general ก่อน แล้วลองรันโค้ดใหม่ ผลคือกลับมาเป็นวันที่เหมือนเดิม เท่าที่เจอตอนนี้จะเกิดเมื่อ

1. รันคำสั่งให้เอาตัวเลขอีกชีทหนึ่งไปเก็บไว้ในชีทฐานข้อมูล หากไม่มีการกำหนดรูปแบบไว้ด้วย เลขนั้นจะกลายเป็นวันที่เลย

2. รันคำสั่ง .Clear เพื่อเอาค่าอื่นมาใส่ หากไม่มีการกำหนดรูปแบบไว้ เลขนั้นจะกลายเป็นวันที่

ผมเลยงงครับ ทั้งๆที่ใช้ไฟล์นี้มาเป็นปีแล้ว ไม่มีปัญหาเลย เพิ่งมาเป็นแบบนี้เมื่อวาน เหมือนกับว่าค่า default ของตัวเลขที่คีย์กลายเป็นวันที่ ไม่ใช่เป็น general (เป็นแค่ไฟล์นี้ครับ)
User avatar
snasui
Site Admin
Site Admin
Posts: 30761
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: ตัวเลขเกือบทั้งหมดในไฟล์เปลี่ยนรูปแบบเป็นวันที่เอง

#6

Post by snasui »

:D ไม่ทราบว่าคุณ DhitiBank ใช้ Excel Version ใดครับ
User avatar
snasui
Site Admin
Site Admin
Posts: 30761
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: ตัวเลขเกือบทั้งหมดในไฟล์เปลี่ยนรูปแบบเป็นวันที่เอง

#8

Post by snasui »

:D ลองตามนี้ครับ
  1. เข้าเมนู File > Options > Save
  2. ให้ดู Path ที่ Auto Recovery file location: เพื่อเปิดหา Folder XLSTART ใน Windows Explorer
  3. ดูว่ามีไฟล์ที่ชื่อ Book.xlt แล้วลองทำตาม Post นี้ครับ http://www.mrexcel.com/forum/excel-ques ... ost1490456
User avatar
DhitiBank
Gold
Gold
Posts: 1676
Joined: Mon Oct 15, 2012 12:07 am

Re: ตัวเลขเกือบทั้งหมดในไฟล์เปลี่ยนรูปแบบเป็นวันที่เอง

#9

Post by DhitiBank »

ขออภัยที่ตอบช้าครับและขอบคุณมากครับสำหรับคำแนะนำ เดี๋ยวจะลองศึกษาดูครับ

ขอถามเรื่องใกล้เคียงกันหน่อยครับ คือตอนนี้ผมแก้ปัญหาไปก่อนโดยการกำหนดรูปแบบตัวเลขลงไปเลยในโค้ด แต่มีปัญหาบ้างกับ 2 โค้ดนี้ครับ
1. =Format(.......,"รูปแบบเลขที่ต้องการ")
2. .Numberformat="รูปแบบเลขที่ต้องการ"

ผมงงว่าโค้ดที่ 1 ทำไมบางครั้งก็ให้ผลที่ต้องการ บางครั้งก็ไม่ได้ เช่น ตั้งรูปแบบ #,##0.00 ผลที่แสดงออกมากลับเป็นเลขทศนิยมธรรมดา ไม่มีเครื่องหมาย , เป็นต้น

ส่วนโค้ด 2 ให้ผลตามต้องการ 100% แต่แค่ต้องเขียนโดยเริ่มบรรทัดใหม่ (จริงๆ แล้วอยากใช้โค้ดบนมากกว่าเพื่อลดความยืดยาวครับ) เลยอยากถามว่าใช้ต่างกันอย่างไรครับ
User avatar
snasui
Site Admin
Site Admin
Posts: 30761
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: ตัวเลขเกือบทั้งหมดในไฟล์เปลี่ยนรูปแบบเป็นวันที่เอง

#10

Post by snasui »

:D Format ใช้กับ Data type ทุกประเภทไม่ใช่เฉพาะตัวเลข ส่วน .NumberFormat ใช้กับ Number เท่านั้นครับ

ส่วนที่ได้บ้างไม่ได้บ้างนั้น ลองแนบไฟล์ตัวอย่างเฉพาะที่มีปัญหามาดูกันครับว่าข้อมูลเป็นอย่างไร จะได้ช่วยตรวจสอบได้ครับ
User avatar
DhitiBank
Gold
Gold
Posts: 1676
Joined: Mon Oct 15, 2012 12:07 am

Re: ตัวเลขเกือบทั้งหมดในไฟล์เปลี่ยนรูปแบบเป็นวันที่เอง

#11

Post by DhitiBank »

ขอบคุณครับอาจารย์ เดี๋ยววันจันทร์ หากยังมีปัญหาอยู่จะแนบตัวอย่างไฟล์มาให้อาจารย์ช่วยดูครับ
User avatar
DhitiBank
Gold
Gold
Posts: 1676
Joined: Mon Oct 15, 2012 12:07 am

Re: ตัวเลขเกือบทั้งหมดในไฟล์เปลี่ยนรูปแบบเป็นวันที่เอง

#12

Post by DhitiBank »

สวัสดีครับอาจารย์

ผมแนบไฟล์มาแล้ว เพื่อขอคำแนะนำเรื่องการใช้โค้ด Format หน่อยครับ

ตามไฟล์แนบ จะสนใจที่ชีท Pro และ Memo ครับ
-ชีท Pro : เวลาใช้งาน ผู้ใช้จะกดปุ่ม "แก้ราคา" แล้วคอลัมน์ J จะปลดล็อคเพื่อให้ใส่แค่ราคาปลีก จากนั้นโปรแกรมจะคำนวณราคาขายส่งให้ แล้วการเปลี่ยนแปลงที่ทำ จะไปบันทึกไว้ในชีท memo เผื่อเอาไว้มาดูย้อนหลังครับ

แต่พอมีปัญหาที่ตัวเลขเปลี่ยนเป็นวันที่เองก็เลยเขียนโค้ดเพิ่ม โดยคิดว่าจะใช้คำสั่ง Format เพื่อกำหนดรูปแบบให้ตัวเลขไปเลย แต่เจอปัญหาครับเช่น ชีท Pro แถว 126 พอใส่ราคาแล้ว รูปแบบตัวเลขยังเป็นวันที่ ทั้งๆ ที่กำหนดรูปแบบไว้ในคำสั่งแล้ว สงสัยผมทำอะไรผิดแน่ๆ คำสั่งอยู่ใน Sheet 5 (Pro) ชื่อ Private Sub Worksheet_Change(ByVal Target As Range) ครับ (บรรทัดที่ 91)

Code: Select all

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim rw As Integer
    Dim lRw As Long
    Dim pcsPck As Integer
    Dim pcsPrz As Single, pckPrz As Single, sOld As Single
    Dim marG1 As Single, marG2 As Single, marG3 As Single
    rw = Target.Row
    marG1 = ActiveSheet.Range("l2").Value
    marG2 = ActiveSheet.Range("m2").Value
    marG3 = ActiveSheet.Range("n2").Value
    
    '//if superuser input pack price in column J
    If Target.Column = 10 Then
        pckPrz = Target.Value
        '//check pieces per pack
        If ActiveSheet.Cells(rw, "f").Value <= 0 Then
            MsgBox "â»Ã´ãÊè¨Ó¹Ç¹ªÔé¹µèÍá¾é¤¡è͹", vbCritical
            Exit Sub
        End If
        With Application
            .ScreenUpdating = False
            .EnableEvents = False
            .Calculation = xlCalculationManual
        End With
        With ActiveSheet
                .Unprotect
                sOld = .Cells(rw, "i").Value
                .Cells(rw, "i").Value = Format(Round(pckPrz * (1 + marG2) / _
                                                    (1 + marG3) + 0.00001, 0), "#,##0")
                .Cells(rw, "h").Value = Format(Round(pckPrz * (1 + marG1) / _
                                                    (1 + marG3) + 0.00001, 0), "#,##0")
                .Cells(rw, "g").Value = Format(Round(pckPrz / (1 + marG3) + 0.00001, 2), "#,##0")
                .Cells(rw, "e").Value = Format(Round(.Cells(rw, "g").Value / .Cells(rw, "f").Value + 0.00001, 2), "#,##0.00")
                .Protect
                .EnableSelection = xlUnlockedCells
        End With
        With Sheets("memo")
                .Unprotect
                lRw = .Range("a" & Rows.Count).End(xlUp).Offset(1, 0).Row
                .Cells(lRw, "a") = Format(ActiveSheet.Cells(rw, "b"), "0")
                .Cells(lRw, "b") = Format(Now(), "dd/mm/yy hh:mm")
                .Cells(lRw, "c") = Format(Round(sOld * (1 + marG3) / (1 + marG2) + 0.00001, 0), "#,##0")
                .Cells(lRw, "d") = Format(Target.Value, "#,##0")
                .Protect , AllowFiltering:=True
        End With
        With Application
            .EnableEvents = True
            .ScreenUpdating = True
        End With
    End If
End Sub
ขอบคุณครับ
You do not have the required permissions to view the files attached to this post.
User avatar
DhitiBank
Gold
Gold
Posts: 1676
Joined: Mon Oct 15, 2012 12:07 am

Re: ตัวเลขเกือบทั้งหมดในไฟล์เปลี่ยนรูปแบบเป็นวันที่เอง

#13

Post by DhitiBank »

ขออภัยเป็นอย่างสูงครับ ผมปลดแค่รหัสล็อคชีท แต่รหัสเปิดไฟล์กับเข้าแก้ไข vb ไม่ได้เอาออก
DhitiBank wrote: รหัสเปิดไฟล์คือ adMin (M ตัวใหญ่ครับ)

รหัสเข้าแก้ไข VBA คือ rklg;biNf (keyboard layout เลือกอังกฤษ แล้วพิมพ์ตามแป้นไทยว่า "พาสเวิร์ด")
User avatar
snasui
Site Admin
Site Admin
Posts: 30761
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: ตัวเลขเกือบทั้งหมดในไฟล์เปลี่ยนรูปแบบเป็นวันที่เอง

#14

Post by snasui »

:D ตาม Code ให้ปรับเป็น .NumberFormat แล้วสังเกตผลลัพธ์ดูใหม่ครับ
Post Reply