Пожалуйста, проверьте следующий код. Вы создадите массив заголовков таким образом, чтобы он отражал вашу реальность:
Sub testCheckHeadersArray()
Dim sh As Worksheet, arrH As Variant, El As Variant, C As Range
Dim boolFound As Boolean, strNotFound As String, lastCol As Long
arrH = Split("Header1,Header3,Header4,Header5,Header6,Header7,Header8,Header9,Header10", ",")
Set sh = ActiveSheet 'please, use here your sheet to be checked
lastCol = sh.Cells(1, Cells.Columns.Count).End(xlToLeft).column
For Each El In arrH
boolFound = False
For Each C In sh.Range(sh.Cells(1, 1), sh.Cells(1, lastCol))
If UCase(El) = UCase(C.value) Then
boolFound = True: Exit For
End If
Next
If Not boolFound Then strNotFound = strNotFound & El & vbCrLf
Next
If strNotFound <> "" Then
MsgBox "The next headers have not been found:" & vbCrLf & strNotFound
Else
MsgBox "Everything OK"
End If
End Sub
Если у вас есть лист с правильными заголовками, вы можете извлечь массив из него:
Set shH = Worksheets("HeaderModel")
arrH = shH.Range(Range("A1"), shH.Cells(1, shH.Cells(1, _
Cells.Columns.Count).End(xlToLeft).column)).value