สำหรับการตั้งค่าให้ Excel รันตัวเลขอัตโนมัติทุกครั้งที่มีการเปิดไฟล์มาใหม่่ เราจะใช้โค้ด VBA ดังนี้
..............................................................................................................................................................
Private Sub Workbook_Open()
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("RunNumber") ' ตรวจสอบให้แน่ใจว่าชื่อชีทถูกต้อง แก้เป็นชีทงานของคุณ
Dim lastNumber As Integer
Dim targetCell As Range
' ระบุเซลล์ที่ต้องการรันหมายเลขอัตโนมัติ ให้แก้เป็นเซลล์ที่คุณต้องการแก้ไข
Set targetCell = ws.Range("E4")
' ตรวจสอบว่าเซลล์มีค่าอยู่แล้วหรือไม่
If IsNumeric(targetCell.Value) And targetCell.Value > 0 Then
lastNumber = targetCell.Value
Else
lastNumber = 0 ' ถ้ายังไม่มีค่า ให้เริ่มจาก 0
End If
' เพิ่มค่าลำดับทีละ 1
lastNumber = lastNumber + 1
targetCell.Value = lastNumber ' อัปเดตค่าใหม่ลงในเซลล์ E4
End Sub
..................................................................................................................................................................
วิธีติดตั้งโค้ด VBA ในไฟล์ของคุณ
- กด
ALT + F11
เพื่อเปิด VBA Editor - ดับเบิลคลิกที่ ThisWorkbook (ใน Project Explorer)
- คัดลอกโค้ดด้านบนแล้ววางลงไป
- กด
CTRL + S
เพื่อบันทึก - ปิด VBA Editor
- ปิดไฟล์ Excel แล้วเปิดใหม่ เพื่อทดสอบการทำงาน
............................................................................................................................................................
หากต้องการให้รันอัตโนมัตในรูปแบบ ES0001, ES0002, ES0003... รันอัตโนมัติ
ให้ใช้โค้ด
............................................................................................................................................................
Private Sub Workbook_Open()
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("RunNumber") ' ตรวจสอบให้แน่ใจว่าชื่อชีทตรงกับไฟล์ของคุณ
Dim lastNumber As Integer
Dim newNumber As String
Dim targetCell As Range
' ระบุเซลล์เป้าหมายเป็น E4
Set targetCell = ws.Range("E4") ' เปลี่ยนตำแหน่งให้ถูกต้อง
' ตรวจสอบว่าเซลล์มีข้อมูลและอยู่ในรูปแบบ ESxxxx
If Not IsEmpty(targetCell.Value) And InStr(targetCell.Value, "ES") > 0 Then
On Error Resume Next ' ป้องกัน Error ถ้าข้อมูลไม่ใช่ตัวเลข
lastNumber = CInt(Right(targetCell.Value, 4)) ' ดึงตัวเลข 4 หลักสุดท้าย
On Error GoTo 0
Else
lastNumber = 0 ' ถ้ายังไม่มีค่า ให้เริ่มต้นที่ 0
End If
' ตรวจสอบให้แน่ใจว่าเริ่มที่ ES0001 ถ้าไฟล์เพิ่งถูกใช้งานครั้งแรก
If lastNumber < 1 Then lastNumber = 0
' เพิ่มเลขลำดับทีละ 1
lastNumber = lastNumber + 1
newNumber = "ES" & Format(lastNumber, "0000") ' ฟอร์แมตให้เป็น ES0001, ES0002...
' บันทึกค่าใหม่ลงในเซลล์ E4
targetCell.Value = newNumber
End Sub
..............................................................................................................................................................
ทดลองเอาไปใช้งานกันดูค่ะ