gpt4 book ai didi

VBA代码冲突

转载 作者:行者123 更新时间:2023-12-03 03:27:18 25 4
gpt4 key购买 nike

我知道,我问了一个不寻常的问题。但是,请帮助我。

我在工作簿上有一个以下代码,它将负责在工作表上复制/粘贴数据。它允许我将数据粘贴到单元格中而不更改格式(仅过去的值)。

基本上,代码将使用目标格式。类似于“粘贴值”。它将允许用户粘贴任何其他格式的数据。因此该格式在各个工作表中是一致的。

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim vNewValues as Variant
NewValues = Target
Application.EnableEvents = False
Application.Undo
Target = NewValues
Application.EnableEvents = True
End Sub

除了上面的代码之外,我在工作表上还有另一个代码,它将帮助我清除内容,并且代码链接到一个按钮。因此,当按下按钮时,它将清除工作表的内容。

Private Sub ResetKey_Click()
If MsgBox("Content of the sheet will be deleted and cannot be restored", vbOKCancel + vbInformation) = vbOK Then
Worksheets("User").Range("E19:I3018").ClearContents
Else
Exit Sub
End If
End Sub

问题:我发现这些代码之间存在冲突。因为,当我单击按钮时,我收到错误,该错误将我指向第一个代码中的 Application.Undo 。我尝试调试代码,但无法让两者都工作。请提出建议。

enter image description here

最佳答案

这会起作用:

Private Sub ResetKey_Click()
If MsgBox("Content of the sheet will be deleted and cannot be restored", vbOKCancel + vbInformation) = vbOK Then
Application.EnableEvents = False
Worksheets("User").Range("E19:I3018").ClearContents
Application.EnableEvents = True
Else
Exit Sub
End If
End Sub

也就是说,您必须抑制该工作表上其他宏中的 Change 事件。不优雅但可行。

澄清第一个宏的作用:它保存单元格的内容,撤消用户的粘贴或输入,然后仅填充粘贴的值,保持格式不变。这种方法的问题在于,事件处理程序不会返回有关触发它的操作的信息 - 它可能是粘贴,但也可能是清除单元格。

关于VBA代码冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46733777/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com