Добрый вечер. Уже третий час мучаюсь с этой проблемой. Никак не получилось решить, поэтому прошу вас о помощи. При перемещении несколько строк, можно ли как то сделать так чтобы не менялись правила условного форматирования? (приложил скрин) Есть ли способ исправить это?
Вот код: (Я новичок в VBA, поэтому код не идеален. Но сам код работает)
Код
Private Sub переместитьвверх_Click()
Dim i As Long
Dim j As Long
Dim k As Long
Dim endRow As Long
Dim selectedIndex As Long
selectedIndex = список.ListIndex
If selectedIndex <= 0 Then Exit Sub
For i = 1 To Склад.Cells(Rows.count, "A").End(xlUp).row
If Склад.Cells(i, "A") = ">" Then
selectedIndex = selectedIndex - 1
If selectedIndex < 0 Then Exit For
End If
Next i
If i > 1 Then
endRow = i + 1
Do While endRow <= Склад.Cells(Rows.count, "A").End(xlUp).row And Склад.Cells(endRow, "A") <> ">"
endRow = endRow + 1
Loop
endRow = endRow - 1
j = i - 1
Do While j > 1 And Склад.Cells(j, "A") <> ">"
j = j - 1
Loop
For k = i To endRow
Склад.Rows(k).Cut
Склад.Rows(j).Insert Shift:=xlDown
j = j + 1
Next k
End If
UpdateList
End Sub
При удалении/вставке строк Excel автоматически меняет формулы с учётом изменений. Соответственно, если есть желание, чтобы формулы в УФ не менялись, надо бросить вставлять/удалять строки, и начать читать значения/формулы в массив, обрабатывать массив и потом сливать его на лист.