我知道,我在問一個不尋常的問題。但是,請幫助我。VBA代碼衝突
我在工作簿上有一個下面的代碼,將負責在工作表上覆制/粘貼數據。這將允許我在不改變格式的情況下將數據粘貼到單元格中(僅過去值)。
基本上,代碼將使用目標格式。類似於「粘貼值」。它將允許用戶從任何其他格式粘貼數據。所以這種格式在各個表格中都是一致
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
的錯誤。我試着調試代碼,但我無法讓這兩個工作。請建議。
'ClearContents'觸發'Workbook_SheetChange'和'Undo'無法工作,因爲運行一個宏(如'ResetKey_Click')會清除撤銷堆棧。不要觸發'ResetKey_Click'的事件或完全修改您的方法。 Excel專門具有「僅粘貼值」。 – GSerg
你的第一塊代碼聲明'vNewValues',但使用'NewValues'。我建議在** VBE Options〜Editor **選項卡中勾選'需要變量聲明'(在所有新模塊的頂部添加Option Explicit)。 –
@ DarrenBartrup-Cook,但它是如何解決我目前的問題。我試圖這樣做,沒有改變我的擔憂。 – sady