: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

กำหนด Format cell ไม่ให้เปลี่ยน

ฟอรัมถาม-ตอบปัญหาการใช้งานสูตรและฟังก์ชัน Excel
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. กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
sakajohn
Member
Member
Posts: 229
Joined: Tue Aug 06, 2013 10:55 am
Excel Ver: 2010

กำหนด Format cell ไม่ให้เปลี่ยน

#1

Post by sakajohn »

ค่า format cell ชอบเปลี่ยนเอง เช่นกำหนดเป็น number แต่บางครั้งเปลี่ยนเป็น DATE มีวิธีกำหนดค่าไม่ให้เปลี่ยนมั้ยครับ
User avatar
snasui
Site Admin
Site Admin
Posts: 31257
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: กำหนด Format cell ไม่ให้เปลี่ยน

#2

Post by snasui »

:D มันจะเปลี่ยนเป็น Date ก็ต้อเมื่อมีการคีย์ค่าตัวเลขลักษณะวันที่หรือคีย์ฟังก์ชั่นที่เป็นจำพวกวันที่ลงไป ไม่มี Option กำหนดไม่ให้เปลี่ยน เป็นความฉลาดประการหนึ่งของ Excel ที่จะต้องทำใจ มีบางโอกาสที่เราเกิดความสะดวกในการใช้งานกับการที่มันเป็นเช่นนั้นครับ :mrgreen:
sakajohn
Member
Member
Posts: 229
Joined: Tue Aug 06, 2013 10:55 am
Excel Ver: 2010

Re: กำหนด Format cell ไม่ให้เปลี่ยน

#3

Post by sakajohn »

ขอบคุณครับ ถ้าเขียน VBA บังคับได้มั้ยครับ
User avatar
snasui
Site Admin
Site Admin
Posts: 31257
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: กำหนด Format cell ไม่ให้เปลี่ยน

#4

Post by snasui »

:D ด้วย VBA แล้วย่อมทำได้แทบทุกอย่างครับ

ลองออกแบบการบังคับที่ต้องการมาด้วยจะได้ช่วยแสดงความคิดเห็นได้ว่า บังคับได้แบบง่ายหรือแบบยากหรือไม่ได้ครับ
sakajohn
Member
Member
Posts: 229
Joined: Tue Aug 06, 2013 10:55 am
Excel Ver: 2010

Re: กำหนด Format cell ไม่ให้เปลี่ยน

#5

Post by sakajohn »

ตอนนี้ผมเขียน โดยให้ก่อนเปลี่ยนไปหน้าถัดไปให้ทำการแก้ไข Formatก่อนทุกครั้งครับ

Code: Select all

Sub backfile5to1()

    Sheets("Sheet5").Select
    Sheets("Sheet1").Visible = True
    Sheets("Sheet5").Select
    ActiveWindow.SelectedSheets.Visible = False
    ActiveSheet.Unprotect Password:="1234"
    Cells.Select
    Selection.NumberFormat = "General"
    
    Range("N9:Q9,T9:W9,AJ10,AK10,D57,D59:E60").Select
    Selection.NumberFormat = "m/d/yyyy"
    
    Range("V39:W40,BA10").Select
    Selection.NumberFormat = "h:mm"
   
    Range("U10:W10").Select
    Selection.NumberFormat = "0;;;@"
    
    ActiveSheet.Protect Password:="1234"
    Range("Q13").Activate
    
End Sub
You do not have the required permissions to view the files attached to this post.
sakajohn
Member
Member
Posts: 229
Joined: Tue Aug 06, 2013 10:55 am
Excel Ver: 2010

Re: กำหนด Format cell ไม่ให้เปลี่ยน

#6

Post by sakajohn »

ส่วนเรื่องการดัก ERROR ที่ผมไปเปิดคำถามใหม่ ขอยกมาถามที่นี่เลยครับ เป็นไฟล์งานเดียวกันครับ ผมเขียนคำสั่งให้เปิดไฟล์ DataBase.xlsx ซึ่ง Share ไฟล์ไว้ครับ เมื่อเปิดไฟล์แล้วจะบันทึกข้อมูลแล้วทำการ Save และปิดไฟล์ไปครับ จะมี user ใช้ประมาณ 5-6คนครับ บางครั้งจะเกิดการบันทึกพร้อมกันในcellเดียวกัน ก้จะ Error ครับ ถ้าผมอยากจะกันไม่ให้ บันทึกไฟล์พร้อมกัน หรือเมื่อเกิด errorก็ให้กลับไปทำการบันทึกใหม่ โดยบอกว่าเกิดerrorให้บันทึกข้อมูลอีกครั้งครับ ผมจะใช้ Code On Error Goto ได้มั้ยครับ แล้วจะต้องแทรกใน Code ช่วงไหนครับ

Code: Select all

Sub Macro2()
Dim x As Integer
    x = MsgBox("ต้องการพิมพ์ใบจ่ายงาน ใช่หรือไม่", vbOKCancel)
    If x = vbCancel Then
    Sheets("Sheet1").Select
    Else
MsgBox "ใส่ใบจ่ายงานด้วยครับ"
 ActiveSheet.Unprotect Password:="1234"
 
  'บันทึก DataBase
    Application.Goto Reference:="OFFSET(R9C30,1,0,COUNTA(C1)-1,33)"
    Selection.Copy
    Workbooks.Open Filename:="\\ACCOUNT\Data (D)\SALE\DataBase.xlsx"
    Sheets("Sheet1").Select
    Application.Goto Reference:="OFFSET(R1C1,COUNTA(C1),0)"
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
        
    ActiveWorkbook.Save
    ActiveWorkbook.Close
    ThisWorkbook.Activate
  
    'สั่งพิมพ์
    Range("Q13:W13").Select
    With Selection.Font
        .ThemeColor = xlThemeColorDark1
        .TintAndShade = 0
    End With
    ActiveSheet.PageSetup.PrintArea = "$A$1:$W$60"
    Application.ActivePrinter = "HART_EPSON on Ne00:"
    ActiveWindow.SelectedSheets.PrintOut Copies:=3, ActivePrinter:= _
            "HART_EPSON on Ne00:", Collate:=True, IgnorePrintAreas:=False
    Range("Q13:W13").Select
    With Selection.Font
        .Color = -16776961
        .TintAndShade = 0
    End With
 
    ActiveSheet.Protect Password:="1234"
    MsgBox ("บันทึกข้อมูลเรียบร้อย"), vbInformation
End If
End Sub
User avatar
snasui
Site Admin
Site Admin
Posts: 31257
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: กำหนด Format cell ไม่ให้เปลี่ยน

#7

Post by snasui »

:D เรื่องการ Share File ผมหมายถึงให้กลับไปถามตอบกันในกระทู้นี้ครับ viewtopic.php?f=3&t=14009

ในการใช้งานจริงได้มีการกำหนดการ Shared ให้กับไฟล์ DataBase.xlsx หรือไม่ครับ ไฟล์ที่แนบมายังไม่ได้กำหนด ช่วยกำหนดมาให้ด้วยครับ
sakajohn
Member
Member
Posts: 229
Joined: Tue Aug 06, 2013 10:55 am
Excel Ver: 2010

Re: กำหนด Format cell ไม่ให้เปลี่ยน

#8

Post by sakajohn »

ผมใช้วิธีบังคับโดยให้ก่อนเปลี่ยนไปหน้าถัดไปให้ทำการแก้ไข Format ก่อนทุกครั้งครับ อย่างนี้ถูกมั้ยครับ

Code: Select all

Sub backfile5to1()

    Sheets("Sheet5").Select
    Sheets("Sheet1").Visible = True
    Sheets("Sheet5").Select
    ActiveWindow.SelectedSheets.Visible = False
    ActiveSheet.Unprotect Password:="1234"
    Cells.Select
    Selection.NumberFormat = "General"
    
    Range("N9:Q9,T9:W9,AJ10,AK10,D57,D59:E60").Select
    Selection.NumberFormat = "m/d/yyyy"
    
    Range("V39:W40,BA10").Select
    Selection.NumberFormat = "h:mm"
   
    Range("U10:W10").Select
    Selection.NumberFormat = "0;;;@"
    
    ActiveSheet.Protect Password:="1234"
    Range("Q13").Activate
    
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: 31257
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: กำหนด Format cell ไม่ให้เปลี่ยน

#9

Post by snasui »

sakajohn wrote: Sun Aug 19, 2018 11:08 am ผมใช้วิธีบังคับโดยให้ก่อนเปลี่ยนไปหน้าถัดไปให้ทำการแก้ไข Format ก่อนทุกครั้งครับ อย่างนี้ถูกมั้ยครับ
:D ลองตรวจสอบว่าทำงานถูกต้องหรือไม่ หากไม่ถูกต้อง ผิดตรงไหน อย่างไร ให้นำประเด็นนั้นมาสอบถามกันต่อครับ
sakajohn
Member
Member
Posts: 229
Joined: Tue Aug 06, 2013 10:55 am
Excel Ver: 2010

Re: กำหนด Format cell ไม่ให้เปลี่ยน

#10

Post by sakajohn »

มันใช้ได้ครับ แต่ผมไม่แน่ใจว่าสูตรที่เขียนมันกระชับหรือยังครับ มันเหมือนจะมีช่วงหน่วงๆของการทำงานอยู่ครับ คือจะเห็นหน้าจอกระพริบๆตามคำสั่งครับ
User avatar
snasui
Site Admin
Site Admin
Posts: 31257
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: กำหนด Format cell ไม่ให้เปลี่ยน

#11

Post by snasui »

:D อย่าเพิ่งให้ความสำคัญกับเรื่องกระชับ มันเป็นเรื่องท้าย ๆ ค่อย ๆ ปรับจูนกันไป แต่เขียนแล้วทำงานได้ อ่านแล้วเข้าใจ แก้ไขเองเป็น เรื่องนี้สำคัญยิ่งกว่าสิ่งไหน

หน้าจอกระพริบเรากำหนดไม่ให้มันกระพริบได้ครับ

ให้ครอบด้วย

Code: Select all

Application.ScreenUpdating = False
'Your code
Application.ScreenUpdating = True
sakajohn
Member
Member
Posts: 229
Joined: Tue Aug 06, 2013 10:55 am
Excel Ver: 2010

Re: กำหนด Format cell ไม่ให้เปลี่ยน

#12

Post by sakajohn »

สอบถามเพิ่มเติมครับ codeนี้ เราควรเริ่มคลุมตั้งแต่ช่วงไหรครับ หรือคลุมcodeทั้งหมดได้เลยครับ
User avatar
snasui
Site Admin
Site Admin
Posts: 31257
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: กำหนด Format cell ไม่ให้เปลี่ยน

#13

Post by snasui »

:D สามารถคลุมทั้งหมดได้เลย ปกติจะวางไว้หลังการประกาศตัวแปรครับ
Post Reply