#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 Я просто знаю, какой код запускается при изменении содержимого в одной из ячеек. Когда кто-то отправляет форму, ответы автоматически добавляются на лист в новой строке, что должно запускать код (но этого не происходит). Если я просто напишу что-то в ячейке вручную, это сработает.