NikitaDvorets, вырвано из контекста, если полностью перечитать сообщения они не противоречат, в 1 сообщении как надо сделать, во 2 как это работает на данный момент
NikitaDvorets, вырвано из контекста, если полностью перечитать сообщения они не противоречат, в 1 сообщении как надо сделать, во 2 как это работает на данный моментhomeavt
homeavt, то, что Вы хотите получить - это целый комплекс взаимосвязанных процедур, заточенных под одну Вашу конкретную задачу. Тут и задание пути и имени сохранения копии книги с использованием, очевидно, диалога Application.GetSaveAsFilename, и само сохранение копии (методом ActiveWorkbook.SaveCopyAs), и открытие этой сохранённой копии, и замена в ней в определённых ячейках формул на значения (тут много разных способов)... То есть за 5 минут это не напишешь. Для себя, любимого, повозиться ещё можно было бы, а так... Извините, лень. Для замены в одном или нескольких выделенных диапазонах формул на значения могу порекомендовать следующую универсальную процедуру: [vba]
Код
Sub Replace_by_VAL() ' в выбранном диапазоне в не скрытых ячейках заменить формулы на значения 'http://www.excelworld.ru/forum/3-45-68810-16-1383818995 Dim rRng As Range, rAr As Range On Error Resume Next With ActiveWindow.RangeSelection.Cells If .Count = 1 Or .MergeCells Then ' если выбрана всего одна ячейка, то SpecialCells выберет все на листе, соответствующие условию .Item(1) = .Item(1).Value: Exit Sub Else ' если выбрано несколько ячеек, то SpecialCells выберет только нужные Set rRng = .SpecialCells(xlCellTypeFormulas).SpecialCells(xlCellTypeVisible) End If End With If rRng Is Nothing Then Exit Sub For Each rAr In rRng.Areas: rAr.Value = rAr.Value: Next rRng.Select ' восстановить выбор диапазонов ячеек (можно не делать) End Sub
[/vba] Абсолютно не сложно переделать эту самостоятельную процедуру так, чтобы она работала как вызываемая общей процедурой подпрограмма не с выделенными диапазонами ячеек, а с передаваемыми ей аргументами - диапазонами ячеек.
homeavt, то, что Вы хотите получить - это целый комплекс взаимосвязанных процедур, заточенных под одну Вашу конкретную задачу. Тут и задание пути и имени сохранения копии книги с использованием, очевидно, диалога Application.GetSaveAsFilename, и само сохранение копии (методом ActiveWorkbook.SaveCopyAs), и открытие этой сохранённой копии, и замена в ней в определённых ячейках формул на значения (тут много разных способов)... То есть за 5 минут это не напишешь. Для себя, любимого, повозиться ещё можно было бы, а так... Извините, лень. Для замены в одном или нескольких выделенных диапазонах формул на значения могу порекомендовать следующую универсальную процедуру: [vba]
Код
Sub Replace_by_VAL() ' в выбранном диапазоне в не скрытых ячейках заменить формулы на значения 'http://www.excelworld.ru/forum/3-45-68810-16-1383818995 Dim rRng As Range, rAr As Range On Error Resume Next With ActiveWindow.RangeSelection.Cells If .Count = 1 Or .MergeCells Then ' если выбрана всего одна ячейка, то SpecialCells выберет все на листе, соответствующие условию .Item(1) = .Item(1).Value: Exit Sub Else ' если выбрано несколько ячеек, то SpecialCells выберет только нужные Set rRng = .SpecialCells(xlCellTypeFormulas).SpecialCells(xlCellTypeVisible) End If End With If rRng Is Nothing Then Exit Sub For Each rAr In rRng.Areas: rAr.Value = rAr.Value: Next rRng.Select ' восстановить выбор диапазонов ячеек (можно не делать) End Sub
[/vba] Абсолютно не сложно переделать эту самостоятельную процедуру так, чтобы она работала как вызываемая общей процедурой подпрограмма не с выделенными диапазонами ячеек, а с передаваемыми ей аргументами - диапазонами ячеек.Alex_ST
С уважением, Алексей MS Excel 2003 - the best!!!
Сообщение отредактировал Alex_ST - Понедельник, 08.04.2024, 10:24