Возможно ли с помощью макроса, после сохранения или закрытия книги преобразовать ячейки с формулами в столбце "D" в значения с условием где сумма в ячейке больше нуля 0?
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim i As Long
ThisWorkbook.Worksheets("List1").Activate
For i = 4 To Cells(Rows.Count, 4).End(xlUp).Row
If Cells(i, 4).Value <> 0 Then
Cells(i, 4).Value = Cells(i, 4).Value
End If
Next i
ThisWorkbook.Save
End Sub
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim i As Long
ThisWorkbook.Worksheets("List1").Activate
For i = 4 To Cells(Rows.Count, 4).End(xlUp).Row
If Cells(i, 4).Value <> 0 Then
Cells(i, 4).Value = Cells(i, 4).Value
End If
Next i
End Sub
_Igor_61, Здравствуйте ещё раз! На началах Ваш макрос работал безупречно, только вот когда диапазон вычисления строк увеличивается от 2 до 2000, то макрос уже считает долго. Можно с этим что то сделать? Или так должно быть?
По почерку принтера можно судить о том, как нервничает компьютер
Помогите пожалуйста преобразовать макрос в другое условие. Условие такое, чтобы макрос преобразовал все ячейки в значения где по условие значение в ячейке больше 0.
Текущий макрос выглядит так:
Код
ThisWorkbook.Worksheets("Serfiyyat 2").Activate
With Application
.ScreenUpdating = False 'отключаем обновление экрана
.Calculation = xlManual 'отключаем автоматический пересчет формул
For i = 6 To Cells(Rows.Count, 10).End(xlUp).Row
If Cells(i, 10).Value <> "" Then
Cells(i, 10).Value = Cells(i, 10).Value
End If
Next i
.Calculation = xlAutomatic 'включаем автоматический пересчет формул
.ScreenUpdating = True 'включаем обновление экрана
End With
End Sub
По почерку принтера можно судить о том, как нервничает компьютер
Dim lc&, lr&
For lc = 1 To Cells(1, Columns.Count).End(xlToLeft).Column 'по столбцам с первого до последнего заполненного
For lr = 6 To Cells(Rows.Count, lc).End(xlUp).Row 'по строкам от шестой и до последней
If Cells(lr, lc).Value <> 0 Then
Cells(lr, lc).Value = Cells(lr, lc).Value
End If
Next lr
Next lc
_Igor_61, Что я делаю не правильно? Формула не работает
Код
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim i As Long
Dim lc&, lr&
ThisWorkbook.Worksheets("Sheet1").Activate
With Application
.ScreenUpdating = False
.Calculation = xlManual
For lc = 1 To Cells(1, Columns.Count).End(xlToLeft).Column
For lr = 2 To Cells(Rows.Count, lc).End(xlUp).Row
If Cells(lr, lc).Value <> 0 Then
Cells(lr, lc).Value = Cells(lr, lc).Value
End If
Next lr
Next lc
.Calculation = xlAutomatic
.ScreenUpdating = True
End With
End Sub
Cells(1, Columns.Count).End(xlToLeft).Column - проверка идет по первой строке а у Вас данные в третьей. Cells(строка, столбец). Почитайте пр Cells в интернете Либо покажите Вашу таблицу чтобы не гадать что Вы хотите
Михаил Витальевич С., похоже что у ТС периодически возникают различные задачи, связанные с таблицами с которыми ему приходится работать, но он не может понять почему получается не тот результат который ему нужен. Отсюда и не получается правильно сформулировать задачу. Возможно начальство требует то так то этак, а возможно ТС пытается решить задачу имеющимися познаниями. Таблицы почему-то не показывает...