' ====== (222) ======= ' ====== Constants ====== Const START_COL As Long = 3 Const END_COL As Long = 9 ' ====== Function ====== Sub Z1_ClearRowData(ByVal ws As Worksheet, ByVal rowNum As Long) Call Generic_Master_ClearRowData(ws, rowNum) End Sub Sub Z1_Import() Call Generic_Master_Import(Me, 7) End Sub Sub Z1_Export() Dim lastDataRow As Long: lastDataRow = GetLastDataRowInRange(Me, START_COL, END_COL) If lastDataRow < 7 Then MsgBox "No data rows to output.", vbExclamation Exit Sub End If Dim r As Long, errorCount As Long For r = 7 To lastDataRow Validate r If Trim(Cells(r, 2).Value & "") <> "" Then errorCount = errorCount + 1 End If Next r If errorCount > 0 Then MsgBox "Validation failed. Found " & errorCount & " error(s). Please correct them before exporting.", vbCritical Exit Sub End If Call Generic_Master_Export(Me, 7, lastDataRow) End Sub Sub Validate(ByVal rowNum As Long) Set ws = Me Dim cValue As String: cValue = Trim(ws.Cells(rowNum, 3).Value) ' clear C~I columns background color Dim clearRange As Range Set clearRange = ws.Range(ws.Cells(rowNum, START_COL), ws.Cells(rowNum, END_COL)) clearRange.Interior.Color = vbWhite If cValue = "" Then ws.Cells(rowNum, 2).Value = "C column is required" ws.Cells(rowNum, 3).Interior.Color = RGB(255, 0, 0) Exit Sub End If If Len(cValue) <> 3 Then ws.Cells(rowNum, 2).Value = "C column must be 3 characters" ws.Cells(rowNum, 3).Interior.Color = RGB(255, 0, 0) Exit Sub End If Dim i As Long Dim ch As String For i = 1 To 3 ch = Mid(cValue, i, 1) If Not ((ch >= "0" And ch <= "9") Or (ch >= "A" And ch <= "Z") Or (ch >= "a" And ch <= "z")) Then ws.Cells(rowNum, 2).Value = "C column must be alphanumeric" ws.Cells(rowNum, 3).Interior.Color = RGB(255, 0, 0) Exit Sub End If Next i Dim dValue As String dValue = Trim(ws.Cells(rowNum, 4).Value) If dValue = "" Then ws.Cells(rowNum, 2).Value = "D column is required" ws.Cells(rowNum, 4).Interior.Color = RGB(255, 0, 0) Exit Sub End If If Len(dValue) > 80 Then ws.Cells(rowNum, 2).Value = "D column must be within 80 characters" ws.Cells(rowNum, 4).Interior.Color = RGB(255, 0, 0) Exit Sub End If Dim eValue As String eValue = Trim(ws.Cells(rowNum, 5).Value) If eValue = "" Then ws.Cells(rowNum, 2).Value = "E column is required" ws.Cells(rowNum, 5).Interior.Color = RGB(255, 0, 0) Exit Sub End If If Len(eValue) > 80 Then ws.Cells(rowNum, 2).Value = "E column must be within 80 characters" ws.Cells(rowNum, 5).Interior.Color = RGB(255, 0, 0) Exit Sub End If Dim fValue As String fValue = Trim(ws.Cells(rowNum, 6).Value) If fValue <> "" And Len(fValue) > 80 Then ws.Cells(rowNum, 2).Value = "F column must be within 80 characters" ws.Cells(rowNum, 6).Interior.Color = RGB(255, 0, 0) Exit Sub End If Dim gValue As String gValue = Trim(ws.Cells(rowNum, 7).Value) If gValue <> "" And Len(gValue) > 80 Then ws.Cells(rowNum, 2).Value = "G column must be within 80 characters" ws.Cells(rowNum, 7).Interior.Color = RGB(255, 0, 0) Exit Sub End If Dim hValue As String hValue = Trim(ws.Cells(rowNum, 8).Value) If hValue <> "" Then If Len(hValue) <> 1 Then ws.Cells(rowNum, 2).Value = "H column must be 1 digit" ws.Cells(rowNum, 8).Interior.Color = RGB(255, 0, 0) Exit Sub End If If hValue <> "0" And hValue <> "1" Then ws.Cells(rowNum, 2).Value = "H column must be 0 or 1" ws.Cells(rowNum, 8).Interior.Color = RGB(255, 0, 0) Exit Sub End If End If Dim iValue As String iValue = Trim(ws.Cells(rowNum, 9).Value) If iValue <> "" And Len(iValue) > 80 Then ws.Cells(rowNum, 2).Value = "I column must be within 80 characters" ws.Cells(rowNum, 9).Interior.Color = RGB(255, 0, 0) Exit Sub End If ws.Cells(rowNum, 2).ClearContents End Sub Sub Z1_validateButton() Dim lastDataRow As Long, r As Long, errorCount As Long lastDataRow = GetLastDataRowInRange(Me, START_COL, END_COL) If lastDataRow < 7 Then MsgBox "No data found.", vbExclamation Exit Sub End If errorCount = 0 For r = 7 To lastDataRow Validate r If Trim(Cells(r, 2).Value) <> "" Then errorCount = errorCount + 1 End If Next r MsgBox "Validation complete. Errors: " & errorCount, vbInformation End Sub Sub Z1_SortDataRowsByC() Call SortDataRows(3) End Sub Sub Z1_ToggleAutoFilter() Call ToggleAutoFilter(6) End Sub Sub Z1_AutoFitColumnWidth() Call AutoFitColumnWidth(2, END_COL) End Sub