Запуск макроса при каждой отправке формы Microsoft

#excel #vba #microsoft-forms

#excel #vba #microsoft-forms

Вопрос:

Я создал форму с помощью Microsoft Forms, и в том же файле Excel у меня есть макрос, который запускается каждый раз, когда происходит изменение, например. A2-A20.

Итак, моя цель — запускать макрос каждый раз, когда кто-то отправляет и поступают данные. Но похоже, что макрос не запускается, когда кто-то отправляет форму, и данные добавляются в файл Excel.
Макрос отлично работает, когда я сам что-то пишу в одной из ячеек.

 Private Sub Worksheet_Change(ByVal Target As Range)
    Dim KeyCells As Range
    
    ' The variable KeyCells contains the cells that will
    ' cause an alert when they are changed.
    Set KeyCells = Range("A2:A20")
 
If Not Application.Intersect(KeyCells, Range(Target.Address)) _
           Is Nothing Then
        
        'Get name for new workbook
        Dim WBnew As Variant
        WBnew = Range("E" amp; Target.Row).Value
        
        ' Creates a reference to workbook object
        Dim WB As Workbook
 
        'Adding a New Workbook
        Set WB = Workbooks.Add
    
        'Set where to save the Workbook and name
        ActiveWorkbook.SaveAs Filename:="C:Users" amp; WBnew amp; ".xls"
 
         'Copy entire row
        Workbooks("Test forms.xlsm").Worksheets("Form1").Range(Target.Row amp; ":" amp; Target.Row).Copy
 
        'Paste to row 2 in the new workbook
        Workbooks(WBnew amp; ".xls").Worksheets("Sheet1").Range("1:1").Insert
        
        'Copy row 1 in old workbook and paste it to the new workbooks row 1
        Workbooks("Test forms.xlsm").Worksheets("Form1").Range("1:1").Copy
        Workbooks(WBnew amp; ".xls").Worksheets("Sheet1").Range("1:1").Insert

        'Save the workbook
        ActiveWorkbook.Save
 
End If
 
End Sub

  

Есть идеи, что делать, чтобы макрос запускался при поступлении новых данных из формы?

Заранее спасибо!

Комментарии:

1. Что «отлично работает, когда я сам пишу в ячейке»? Следует ли нам определить, какая у вас проблема? Затем вы используете Worksheet_Change событие, и вам также нужно инициировать изменения, вносимые в ячейки с помощью formulas update? Если да, вам следует использовать Worksheet_Calculate событие. Если это не ваша проблема, отредактируйте свой вопрос и поделитесь используемым кодом, пожалуйста.

2. Извините за это. Я также обновил свой вопрос некоторым кодом.

3. Change Событие запускается только при изменении содержимого ячейки. Не совсем ясно, какой именно код вы хотите запустить.

4. Существуют ли формулы в диапазоне, о котором вы говорите, и вы хотите, чтобы событие запускалось, когда значение этих ячеек изменяется путем модификации на других листах?

5. @SJR Я просто знаю, какой код запускается при изменении содержимого в одной из ячеек. Когда кто-то отправляет форму, ответы автоматически добавляются на лист в новой строке, что должно запускать код (но этого не происходит). Если я просто напишу что-то в ячейке вручную, это сработает.