คุณเคยพิจารณาเรื่องนี้ แทน ?
เปลี่ยน NumberFormat บน ป้อน เซลล์เป็น NumberFormat "ทั่วไป" ทุกครั้ง
(คุณจะต้องป้อนเซลล์ในโหมดแก้ไขเพื่อเปลี่ยนจากวันที่เป็นข้อความอยู่แล้วดังนั้นจึงไม่แตกต่างกันอย่างมีนัยสำคัญ)
แทนที่จะตรวจสอบรูปแบบเมื่อคุณอยู่ การออกจาก เซลล์
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
ActiveCell.NumberFormat = "General"
End Sub
แน่นอนว่าสิ่งนี้สามารถสร้างปัญหาอื่น ๆ กับเซลล์อื่น ๆ ที่คุณไม่ต้องการเป็น "ทั่วไป" แต่คุณสามารถยกเว้นช่วงได้โดยง่ายโดยการทดสอบ
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
If ActiveCell.Column <> 4 Then
ActiveCell.NumberFormat = "General"
End If
End Sub
เมื่อคุณป้อนวันที่ใน ActiveCell Excel จะยังคงแปลงเป็นรูปแบบวันที่เมื่อคุณออก แต่เนื่องจากเป็นรูปแบบ "ทั่วไป" ที่เริ่มต้นด้วยหมายเลขซีเรียลจะไม่แปลงเป็นวันที่ คุณมีตอนนี้
ข้อเสียที่ใหญ่ที่สุดคือการเลือกวันที่ที่มีอยู่จะแปลงเป็น "ทั่วไป" แต่ในขณะที่อยู่ในเซลล์คุณสามารถคลิกขวาและจัดรูปแบบเป็นวันที่ได้เสมอ
หากคุณยังต้องการสำรวจการจัดรูปแบบเซลล์ในขณะที่คุณออกไปคุณสามารถลองได้เช่นกัน
เก็บ ActiveCell ปัจจุบันเป็นตัวแปรสาธารณะในโมดูลเพื่อให้เมื่อคุณออกไปคุณสามารถใช้เพื่อตรวจสอบว่าเป็นรูปแบบวันที่
ฟังก์ชันเซลล์อาจเป็นวิธีที่ง่ายที่สุดในการทดสอบรูปแบบวันที่
aCell = Application.Evaluate("=CELL(""format""," & previousCell & ")")
If Left(aCell, 1) <> "D" Then previouseCell.NumberFormat = "General"