Page 1 of 1

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

Posted: Fri Aug 17, 2018 8:44 pm
by sakajohn
ค่า format cell ชอบเปลี่ยนเอง เช่นกำหนดเป็น number แต่บางครั้งเปลี่ยนเป็น DATE มีวิธีกำหนดค่าไม่ให้เปลี่ยนมั้ยครับ

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

Posted: Fri Aug 17, 2018 8:51 pm
by snasui
:D มันจะเปลี่ยนเป็น Date ก็ต้อเมื่อมีการคีย์ค่าตัวเลขลักษณะวันที่หรือคีย์ฟังก์ชั่นที่เป็นจำพวกวันที่ลงไป ไม่มี Option กำหนดไม่ให้เปลี่ยน เป็นความฉลาดประการหนึ่งของ Excel ที่จะต้องทำใจ มีบางโอกาสที่เราเกิดความสะดวกในการใช้งานกับการที่มันเป็นเช่นนั้นครับ :mrgreen:

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

Posted: Fri Aug 17, 2018 9:15 pm
by sakajohn
ขอบคุณครับ ถ้าเขียน VBA บังคับได้มั้ยครับ

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

Posted: Fri Aug 17, 2018 9:21 pm
by snasui
:D ด้วย VBA แล้วย่อมทำได้แทบทุกอย่างครับ

ลองออกแบบการบังคับที่ต้องการมาด้วยจะได้ช่วยแสดงความคิดเห็นได้ว่า บังคับได้แบบง่ายหรือแบบยากหรือไม่ได้ครับ

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

Posted: Sat Aug 18, 2018 4:27 pm
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

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

Posted: Sat Aug 18, 2018 4:32 pm
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

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

Posted: Sat Aug 18, 2018 5:27 pm
by snasui
:D เรื่องการ Share File ผมหมายถึงให้กลับไปถามตอบกันในกระทู้นี้ครับ viewtopic.php?f=3&t=14009

ในการใช้งานจริงได้มีการกำหนดการ Shared ให้กับไฟล์ DataBase.xlsx หรือไม่ครับ ไฟล์ที่แนบมายังไม่ได้กำหนด ช่วยกำหนดมาให้ด้วยครับ

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

Posted: Sun Aug 19, 2018 11:08 am
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

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

Posted: Sun Aug 19, 2018 11:13 am
by snasui
sakajohn wrote: Sun Aug 19, 2018 11:08 am ผมใช้วิธีบังคับโดยให้ก่อนเปลี่ยนไปหน้าถัดไปให้ทำการแก้ไข Format ก่อนทุกครั้งครับ อย่างนี้ถูกมั้ยครับ
:D ลองตรวจสอบว่าทำงานถูกต้องหรือไม่ หากไม่ถูกต้อง ผิดตรงไหน อย่างไร ให้นำประเด็นนั้นมาสอบถามกันต่อครับ

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

Posted: Sun Aug 19, 2018 11:31 am
by sakajohn
มันใช้ได้ครับ แต่ผมไม่แน่ใจว่าสูตรที่เขียนมันกระชับหรือยังครับ มันเหมือนจะมีช่วงหน่วงๆของการทำงานอยู่ครับ คือจะเห็นหน้าจอกระพริบๆตามคำสั่งครับ

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

Posted: Sun Aug 19, 2018 11:37 am
by snasui
:D อย่าเพิ่งให้ความสำคัญกับเรื่องกระชับ มันเป็นเรื่องท้าย ๆ ค่อย ๆ ปรับจูนกันไป แต่เขียนแล้วทำงานได้ อ่านแล้วเข้าใจ แก้ไขเองเป็น เรื่องนี้สำคัญยิ่งกว่าสิ่งไหน

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

ให้ครอบด้วย

Code: Select all

Application.ScreenUpdating = False
'Your code
Application.ScreenUpdating = True

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

Posted: Mon Aug 20, 2018 8:04 pm
by sakajohn
สอบถามเพิ่มเติมครับ codeนี้ เราควรเริ่มคลุมตั้งแต่ช่วงไหรครับ หรือคลุมcodeทั้งหมดได้เลยครับ

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

Posted: Mon Aug 20, 2018 8:10 pm
by snasui
:D สามารถคลุมทั้งหมดได้เลย ปกติจะวางไว้หลังการประกาศตัวแปรครับ