Выбрать дату в календареВыбрать дату в календаре

Страницы: 1
Копирование формулы vba excel, Произвести вычисления в ячейке
 
webley, Спасибо!  
Копирование формулы vba excel, Произвести вычисления в ячейке
 
У меня возник вытекающий вопрос. Как с помощью макроса  протянуть формулу на 100 ячеек вправо.
Т.е. взять результат из ячейки H107 (это будет коэффициент для всей строки)  и умножить его со значением ячейки A20, B20 и т.д. до CV20
Копирование формулы vba excel, Произвести вычисления в ячейке
 
Дмитрий(The_Prist) Щербаков, спасибо Вам большое! Мне очень жаль, что я отняла ваше время. Я лишь начинающий пользователь макросов. Извините. Впредь буду стараться правильно формулировать задачу.
Все работает! Благодарю!  
Копирование формулы vba excel, Произвести вычисления в ячейке
 
Поставила общий формат - результат тот же
Копирование формулы vba excel, Произвести вычисления в ячейке
 
Цитата
написал:
так у вас в исходнике не формула, а текст - вот и вставляется как текст
если поставлю другой формат, он начинает ССЫЛИТЬ
Копирование формулы vba excel, Произвести вычисления в ячейке
 
Цитата
написал:
Кстати, почему не используете копирование ячеек полностью? Почему только формулы? Форматы не нужны или что-то еще?
Это не принципиально, главное, чтобы был произведен расчет. Файлы прикладываю. Формула находится в файле  "для копирования".  
Вставляем в файл c названием "для вставки"
Изменено: guest99 - 22.09.2023 13:49:43
Копирование формулы vba excel, Произвести вычисления в ячейке
 
Дмитрий(The_Prist) Щербаков, Да лишнее убрала, как Вы советовали. Везде автопересчет стоит. Заметила, что если в скопированных ячейках произвести замену = на =, то формулы вычисляются. Как это работает и с чем связано непонятно. Прикладываю отредактированный код
Код
Sub CopyFilesData()
    Dim avFiles
    Dim li As Long
    Dim wb As Workbook
    avFiles = Application.GetOpenFilename _
            ("Excel files(*.xls*),*.xls*", 1, "", , True)
    If VarType(avFiles) = vbBoolean Then
        Exit Sub
    End If
    
    'On Error Resume Next
     
     
    For li = LBound(avFiles) To UBound(avFiles)
        Set wb = Application.Workbooks.Open(avFiles(li), False, False)
                  
        ThisWorkbook.ActiveSheet.Range("A125:B129").Copy
        ActiveWorkbook.Sheets("затраты").Range("H106:I110").PasteSpecial Paste:=xlPasteFormulas
        ActiveWorkbook.Sheets("затраты").Calculate
        wb.Close True
    Next li
    Application.Calculation = xlCalculationAutomatic
    Application.DisplayAlerts = True
    Application.EnableEvents = True
    Application.ScreenUpdating = True
    Application.CutCopyMode = False
End Sub
Копирование формулы vba excel, Произвести вычисления в ячейке
 
Дмитрий(The_Prist) Щербаков,

К сожалению ничего не изменилось. Может проще будет для диапазона ячеек, содержащих формулу выполнить макросом команду F2+enter?
Не могли бы Вы подсказать как это реализовать в моем коде?
Копирование формулы vba excel, Произвести вычисления в ячейке
 
Код
Дмитрий(The_Prist) Щербаков написал:
А по представленному куску кода обсуждать особо нечего, только гадать. Sub ()
On Error Resume Next
Application.Calculation = xlCalculationManual
Dim avFiles
Dim li As Long
Dim wb As Workbook
    avFiles = Application.GetOpenFilename _
            ("Excel files(*.xls*),*.xls*", 1, "", , True)
    If VarType(avFiles) = vbBoolean Then
    Exit Sub
    End If
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Application.EnableEvents = False
    For li = LBound(avFiles) To UBound(avFiles)
        Set wb = Application.Workbooks.Open(avFiles(li), 0)
                
        ThisWorkbook.ActiveSheet.Range("A125:B129").Copy
        ActiveWorkbook.Sheets("затраты").Range("H106:I110").PasteSpecial Paste:=xlPasteFormulas
                  
        wb.Close True
    Next li
Application.Calculation = xlCalculationAutomatic
Application.DisplayAlerts = True
Application.EnableEvents = True
Application.ScreenUpdating = True
Application.CutCopyMode = False

End Sub

Отправляю полный код программы
Копирование формулы vba excel, Произвести вычисления в ячейке
 
Вот формула, которая копируется и вставляется :
=ЕСЛИ(Лист1!$H$48/'Лист2'!$G$111<0,15;0;$G$107/$G$111)
Копирование формулы vba excel, Произвести вычисления в ячейке
 
Цитата
написал:
Ну и для проверки лучше создать пустую книгу(Файл -Создать) и попробовать перенести формулы в неё кодом. Если там они заработают - значит проблема 100% именно в той книге
проверила на пустой книге. Аналогично. Значит проблема не в книге. Даже не знаю, что теперь делать...  
Копирование формулы vba excel, Произвести вычисления в ячейке
 
Дмитрий(The_Prist) Щербаков,
Добрый день!
Попробовала Ваш способ. Формат ячеек поменялся, но вычисление формулы автоматически не происходит. Только если зайти и выйти из ячейки.
В ячейке стоит логическая формула "если". Пробовала формулу поменять: просто сложение выполнить. Ничего не поменялось, авторасчета нет  
Копирование формулы vba excel, Произвести вычисления в ячейке
 
Цитата
написал:
а попробуйте все-таки добавить в конце строчку
Добавила. Но все равно видно только текст формулы
Копирование формулы vba excel, Произвести вычисления в ячейке
 
Цитата
написал:
Добрый день. Возможно у вас в Параметрах вычислений установлено значение Вручную
Параметры стоят "автоматически"
Копирование формулы vba excel, Произвести вычисления в ячейке
 
Код
ThisWorkbook.ActiveSheet.Range("A126:B129").Copy
        ActiveWorkbook.Sheets("затраты").Range("H107:I110").PasteSpecial Paste:=xlPasteFormulas
Прошу помочь.
Имеется фрагмент кода, который копирует формулу из одного файла в другой. Почему скопированные ячейки не производят вычисления? Чтобы формула произвела расчет приходится проваливаться в ячейку и нажимать enter.
Вывод ошибок с названиями файлов в текущую книгу (VBA)
 
evgeniygeo, Благодарю!
Вывод ошибок с названиями файлов в текущую книгу (VBA)
 
evgeniygeo, Как реализовать вывод в виде списка на листе ,а не через MsgBox?
Вывод ошибок с названиями файлов в текущую книгу (VBA)
 
Имеется макрос, который разрывает связи в файлах excel. Подскажите как мне вывести в текущую книгу названия файлов, у которых связи не разрываются или есть какие  то ошибки.
Код
Sub Убрать связи()
On Error Resume Next
    Dim sFolder As String, sFiles As String
    Dim wb As Workbook
    Dim WbLinks As Variant, i As Long
        With Application.FileDialog(msoFileDialogFolderPicker)
        If .Show = False Then Exit Sub
        sFolder = .SelectedItems(1)
        End With
    sFolder = sFolder & IIf(Right(sFolder, 1) = Application.PathSeparator, "", Application.PathSeparator)
    Application.ScreenUpdating = False
    Application.AskToUpdateLinks = False
    sFiles = Dir(sFolder & "*.xls*")
Do While sFiles <> ""
            Set wb = Application.Workbooks.Open(sFolder & sFiles, 0)
            WbLinks = ActiveWorkbook.LinkSources(xlExcelLinks)
            If Not IsEmpty(WbLinks) Then
                For i = 1 To UBound(WbLinks)
                ActiveWorkbook.BreakLink Name:=WbLinks(i), Type:=xlExcelLinks
                Next i
            End If
            wb.Close True
            sFiles = Dir
   Loop
   Application.ScreenUpdating = True
 End Sub
Оптимизация кода форматирования не защищенных ячеек., Сократить время выполнения макроса
 
Помогите ускорить процесс выполнения кода. Код выполняет следующие действия: проверяет защищена ячейка или нет. Если нет, то форматирует ее и переходит к следующей.
Код
 Range("A110:DY300").Select
               For Each rCell In Selection
               If rCell.Locked = False Then
                  rCell.Select
                  Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
               End If
               Next rCell
Изменено: БМВ - 10.07.2023 15:22:10
Поменять формат ячеек (обойти ячейки с защитой) в списке файлов
 
Цитата

2:  https://www.excel-vba.ru/chto-umeet-excel/dialogovoe-okno-vybora-fajlovpapki/
Подскажите пожалуйста, почему выдает ошибку??
Код
Sub test()
    Dim sFolder As String
    Dim wb As Workbook
    Dim x
    Dim sFiles
    sFiles = Application.GetOpenFilename("Excel files(*.xls*),*.xls*", 1, "Âûáðàòü ôàéëû", , True)
        If VarType(sFiles) = vbBoolean Then
        Exit Sub
    End If
    Application.ScreenUpdating = False
    Application.AskToUpdateLinks = False
    Range("B7").Select
    Selection.Copy
    Do While sFiles <> ""
               Set wb = Application.Workbooks.Open(sFiles, 0)
                wb.Sheets("лист").Activate
                Range("ae29").Select
                Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
                wb.Close True
                sFiles = Dir
    Loop
    Application.ScreenUpdating = True
    Application.CutCopyMode = False
End Sub
Поменять формат ячеек (обойти ячейки с защитой) в списке файлов
 
Цитата
написал:
guest99 , тогда Ваш вариант пройти перебором по всем ячейками отдельно, проверив не защищены ли они
В этом и вопрос) Как это реализовать в моем коде?
Поменять формат ячеек (обойти ячейки с защитой) в списке файлов
 
evgeniygeo, ячейки защищены другим пользователем. пароль мне неизвестен
Поменять формат ячеек (обойти ячейки с защитой) в списке файлов
 
Выдает ошибку  - неверный пароль
Изменено: guest99 - 10.07.2023 08:29:11
Поменять формат ячеек (обойти ячейки с защитой) в списке файлов
 
1. Отправляю код, который копирует формат ячейки B12 в ячейки A110:DD2000. В указанном диапазоне A110:DD2000 иногда есть защищенные ячейки. Находится могут в любом месте. Как обойти эти защищенные ячейки (или даже лучше снять защиту) и поменять формат в остальных

2. Как сделать так, чтобы при открытии диалогового окна можно было выбрать не все файлы из папки, а видно было список файлов для выбора.

Код
Sub Поменять_форматы()
   Dim sFolder As String, sFiles As String
   Dim wb As Workbook
       With Application.FileDialog(msoFileDialogFolderPicker)
       If .Show = False Then Exit Sub
   sFolder = .SelectedItems(1)
   End With
   sFolder = sFolder & IIf(Right(sFolder, 1) = Application.PathSeparator, "", Application.PathSeparator)
   Application.ScreenUpdating = False
   Application.AskToUpdateLinks = False
   sFiles = Dir(sFolder & "*.xls*")
   Range("B12").Select
   Selection.Copy
   Do While sFiles <> ""
              Set wb = Application.Workbooks.Open(sFolder & sFiles, 0)
             
              wb.Sheets("Лист").Activate
              Range("A110:DD2000").Select
              Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
         
              wb.Close True
              sFiles = Dir
   Loop
   Application.ScreenUpdating = True
   Application.CutCopyMode = False
   MsgBox "Форматы изменены"
End Sub
Скрыть листы макросом, С помощью макроса скрыть определенные листы
 
Всем спасибо! :)  
Изменено: guest99 - 10.07.2023 08:01:39
Скрыть листы макросом, С помощью макроса скрыть определенные листы
 
Ігор Гончаренко, Спасибо! Вы мне очень помогли! Внесла правки в код - все заработало!
Скрыть листы макросом, С помощью макроса скрыть определенные листы
 
Цитата
Prosvetov
Проблема в том. что имена скрываемых листов может быть разной.  Допустим это массив 1. Листы, названия которых известно  делаю видимыми. Это массив 2. Есть листы из массива 1, которые заключены между двумя листами из массива 2. Вот их надо сделать видимыми.  
Скрыть листы макросом, С помощью макроса скрыть определенные листы
 
В файле есть листы с определенными названиями. Среди них есть лишние вспомогательные листы, которые скрываются. Проблема в том, что часть листов заключенная между листами 5 и 8 необходима для отображения. Их названия могут быть произвольными и разное количество. Результат работы макроса не дает должный результат. Поправьте пожалуйста






Sub Скрыть_листы()
   Dim sFolder As String, sFiles As String
   Dim wb As Workbook
   Dim sh As Worksheet
   Dim i
       With Application.FileDialog(msoFileDialogFolderPicker)
       If .Show = False Then Exit Sub
   sFolder = .SelectedItems(1)
   End With
   sFolder = sFolder & IIf(Right(sFolder, 1) = Application.PathSeparator, "", Application.PathSeparator)
   Application.ScreenUpdating = False
   Application.AskToUpdateLinks = False
   sFiles = Dir(sFolder & "*.xls*")
       Do While sFiles <> ""
           Set wb = Application.Workbooks.Open(sFolder & sFiles, 0)
           For Each sh In Worksheets
             Select Case sh.Name
                    Case Is = "лист1", "лист2", "лист5", "лист8"
                    sh.Visible = True
                    Case Else
                    sh.Visible = False
            End Select
           For i = wb.Worksheets("лист5").Index + 1 To wb.Worksheets("лист8").Index - 1 Step 1
               p = i - wb.Worksheets("лист5").Index
               Worksheets(p + 1).Visible = True
           Next
           Next
           wb.Close True
           sFiles = Dir
       Loop
   Application.ScreenUpdating = True
   MsgBox "Листы скрыты"
 End Sub
Страницы: 1
Наверх