Другие языки программирования и технологии

VBA. Очистка ячеек...

Есть ячейки, которые нужно сохранить (распологаются спонтанно, никакой связи между их адресами нет), все остальные - очистить. Возможно ли их как-то... заблокировать?
Что-то типа этого?

Итак, процедура VBA, которая автоматически меняет свойство блокировки ячеек на основе цвета. Цвет для ячеек назначается не вручную, а на основе условного форматирования. В процедуре необходимо указать диапазон в листах, в рамках которого находятся искомые ячейки

Private Sub CommandButton1_Click()

' Выключаем автокалькуляцию
xlCalc = Application.Calculation
Application.Calculation = xlCalculationManual
x1 = 1 ‘ ширина области для анализа ячеек по горизонтали
y1 = 1 ‘ ширина области для анализа ячеек по вертикали
startX = 10 ‘ начало области для анализа ячеек по горизонтали
startY = 10 ‘ начало области для анализа ячеек по вертикали
cn = 0

For Each Sh In Sheets
Worksheets(Sh.Name).Activate
For x = startX To 21 + x1
For y = startY To 14 + y1
If ActiveSheet.Cells(y, x).FormatConditions.Count > 0 Then cn = cn + 1
Next
Next
Next

cnt = 0
For Each Sh In Sheets
Worksheets(Sh.Name).Activate
For x = startX To 21 + x1
For y = startU To 14 + y1
If ActiveSheet.Cells(y, x).FormatConditions.Count > 0 Then
ActiveSheet.Cells(y, x).Select
tmp = ActiveSheet.Cells(y, x).Formula
evl = ActiveSheet.Cells(y, x).FormatConditions(1).Formula1
If tmp = "" Then
ActiveSheet.Cells(y, x).FormulaLocal = evl
If IsError(ActiveSheet.Cells(y, x)) Then
ActiveSheet.Cells(y, x).Locked = True
Else
If ActiveSheet.Cells(y, x).Value = "False" Then
ActiveSheet.Cells(y, x).Locked = True
Else
ActiveSheet.Cells(y, x).Locked = False
End If
End If
End If
ActiveSheet.Cells(y, x).Formula = tmp
cnt = cnt + 1
Application.StatusBar = Round(cnt / cn * 100, 1) & "%"
End If
Next
Next
Next

'Включаем автокалькуляцию
Application.Calculation = xlCalc
End Sub
Станислав Симаков
Станислав Симаков
4 161
Лучший ответ
Ербол Умбетов Моя благодарность не знает границ!