如何在将活动用户数据输入到工作表之前更新共享工作簿并更改其他工作簿?

Kan*_*esh 3 excel vba excel-vba

我有一个共享的宏启用工作簿用于进行测验.我可以选择配置可以借助计算机名称访问测验的用户.一切都很好.但是,我想介绍一个功能来记录工作簿中的主要内容.用户不会手动输入任何内容.所有条目都使用userforms进行.

我创建了一个sub,每次用户执行我需要捕获的操作时都会运行.当单个用户处于活动状态时,代码就像魅力一样.当多个用户同时访问该文件时,会出现此问题.

问题是,用户会看到提示选择在关闭工作表时获胜的更改.我不希望这种情况发生.无论如何,可以删除提示并保存所有更改.

有没有解决方法呢?下面是我现在的代码.

Sub Actions()
    QA_Quiz_Master.Save
    Application.ScreenUpdating = False
    UN = Evaluate("=UserNameWindows()")
    QuizN = Sheet4.Range("F2").Value
    totlog = Log.Range("A1048576").End(xlUp).Row + 1
    Select Case Action
        Case "Open"
            Log.Range("C" & totlog).Value = "Accessed"
        Case "Start"
            Log.Range("C" & totlog).Value = "Started Quiz"
        Case "Submit"
            Log.Range("C" & totlog).Value = "Submitted Quiz"
        Case "AdminContact"
            Log.Range("C" & totlog).Value = "Contacted Admin"
        Case "AccessRequest"
            Log.Range("C" & totlog).Value = "Sent Access Request"
        Case "Publish"
            Log.Range("C" & totlog).Value = "Published Quiz"
        Case "Republish"
            Log.Range("C" & totlog).Value = "Republished Quiz"
        Case "Withdraw"
            Log.Range("C" & totlog).Value = "Withdrew Quiz"
        Case "AnsPublish"
            Log.Range("C" & totlog).Value = "Published Answers"
    End Select
    Log.Range("A" & totlog).Value = UN
    Log.Range("B" & totlog).Value = QuizN
    Log.Range("D" & totlog).Value = Now()
    Log.Columns("A:D").EntireColumn.AutoFit
    Application.DisplayAlerts = False
    QA_Quiz_Master.Save
    Application.ScreenUpdating = True
End Sub
Run Code Online (Sandbox Code Playgroud)

Kan*_*esh 5

经过一番研究,我自己解决了问题.我只需要在sub的开头添加以下代码

If ActiveWorkbook.MultiUserEditing Then
    QA_Quiz_Master.AcceptAllChanges
    QA_Quiz_Master.Save
End If
Run Code Online (Sandbox Code Playgroud)