Ну, хотя при вызове VBA из макроса после события вставки невозможно вставить только что вставленную строку, эта подпрограмма VBA может читать + обновлять столько ДРУГИХ строк, сколько вам нужно. И если эта новая строка или данные, которые вы записываете в VBA, должны включать данные из только что вставленной строки?
Хорошо передайте столбцы подпрограмме VBA. Теперь он может сложить все остальные строки, а затем включить значения, только что переданные из макроса данных.
Таким образом, макрос данных (после вставки) может выглядеть так:
И код VBA, таким образом, может выглядеть так:
Public Function AfterU(vid As Variant, Amount As Variant)
Debug.Print vid, Amount
Dim rst As DAO.Recordset
' open table, sum data
' add Amount passed.
' write out data to some table.
' caution - don't add reocrds to this table that has the trigger
' else you wind up in a endless loop
End Function
Вышеуказанное, конечно, должно быть помещено в стандартный модуль кода (не в формы), и должно быть определено как общедоступное, как указано выше.
Таким образом, хотя вы обнаружите, что добавленная JUST запись еще не зафиксирована в таблице (она должна быть), вы все равно можете запустить + вызвать некоторый код VBA. Вы просто не получаете в свои руки запись только что (вот-вот будет) вставлена.
Однако, так как вы можете передать необходимые столбцы, такие как сумма и т. Д., Чтобы включить в итоговую сумму? Тогда вы можете написать столько обновлений VBA и вставить код, сколько пожелаете. Таким образом, вы можете извлекать некоторые записи, создавать итоги, а теперь обновлять некоторые существующие записи или даже добавлять новые записи. Просто включите новую сумму также.
Как уже отмечалось, вы не хотите «запутывать» запись в таблицу, в которой есть такой триггер со вставками VBA, поскольку вы легко можете застрять в бесконечном цикле.
Тем не менее, для добавления, обновления или вставки в другую таблицу вы должны делать то, что вам нравится, в коде VBA.