У меня есть подпрограмма, полученная из Интернета, которая будет организовывать столбцы листа заданным способом.Это работает для одного листа, но теперь у меня есть приложение, где мне нужно переупорядочить 4 листа, каждый в разном порядке.В этом коде использовался массив заголовков столбцов для изменения столбцов (colOrdr).Моя идея заключалась в том, чтобы определить массив для каждого листа, а затем «поменять» массив каждый раз через цикл.(colOdr1, colOdr, ...) Но я получаю несоответствие типов.Я знаю, что неправильно назначаю переменную colOrdr, но не могу понять, как это сделать правильно.
Sub ColOrder()
Dim search As Range
Dim cnt As Integer
Dim colOrdr As Variant
Dim sheetOrdr1 As Variant
Dim sheetOrdr2 As Variant
Dim sheetOrdr3 As Variant
Dim indx As Integer
' Define column order for each sheet using their column header names
sheetOrdr1 = Array("ID", "Fname", "Lname", "Addr1", "Addr2", "City", "State", "Zip")
sheetOrdr2 = Array("ID", "Hphone", "Cphone", "Fax", "Other")
sheetOrdr3 = Array("ID", "Sdate", "Edate", "Active", "Rate", "Status", "Cert")
Dim shCount As Integer
shCount = 1
For shCount = 1 To 3
ThisWorkbook.Worksheets(shCount).Select ' Select worksheets left to right
colOrdr = colOrdr & shCount ' Assign the array
cnt = 1
For indx = LBound(colOrdr) To UBound(colOrdr) ' I GET A TYPE MISMATCH ON THIS LINE
Set search = Rows("1:1").Find(colOrdr(indx), LookIn:=xlValues, LookAt:=xlWhole, searchorder:=xlByColumns, searchdirection:=xlNext, MatchCase:=False)
If Not search Is Nothing Then
If search.Column <> cnt Then
search.EntireColumn.Cut
Columns(cnt).Insert Shift:=xlToRight
Application.CutCopyMode = False
End If
cnt = cnt + 1
End If
Next indx
Next shCount
End Sub
'''