Skip to main content

如何防止在 Excel 中複製並貼上覆蓋帶有下拉列表的儲存格?

Author: Siluvia Last Modified: 2025-05-12

對於帶有資料驗證下拉列表的儲存格,當從另一個儲存格複製內容並貼上時,下拉列表將消失並被新的貼上內容取代。在某些情況下,您希望防止將其他內容複製並貼上到帶有下拉列表的儲存格中,該如何處理這個問題呢?本文將為您提供一種使用 VBA 方法解決此問題的方式。

防止在 Excel 中複製並貼上覆蓋帶有下拉列表的儲存格


防止在 Excel 中複製並貼上覆蓋帶有下拉列表的儲存格

1. 打開包含要防止複製和貼上的下拉列表儲存格的工作表。

2. 同時按下 Alt + F11 鍵以打開 Microsoft Visual Basic 應用程式視窗。

3. 在 Microsoft Visual Basic 應用程式視窗中,雙擊左側窗格中的當前工作表名稱,然後將以下 VBA 程式碼複製並貼上到程式碼編輯器中。請參閱截圖:

copy and paste the code into the sheet module

VBA 程式碼:防止複製並貼上覆蓋帶有下拉列表的儲存格

Private Sub Worksheet_Change(ByVal Target As Range)
'Updated by Extendoffice 20200903
    Dim xValue As String
    Dim xCheck1 As String
    Dim xCheck2 As String
    Dim xRg As Range
    Dim xArrCheck1() As String
    Dim xArrCheck2() As String
    Dim xArrValue()
    Dim xCount, xJ As Integer
    Dim xBol As Boolean
'    If Target.Count > 1 Then
'        Exit Sub
'        End If
    xCount = Target.Count
    ReDim xArrCheck1(1 To xCount)
    ReDim xArrCheck2(1 To xCount)
    ReDim xArrValue(1 To xCount)
    Application.EnableEvents = False
    On Error Resume Next
    xJ = 1
    For Each xRg In Target
        xArrValue(xJ) = xRg.Value
         xArrCheck1(xJ) = xRg.Validation.InCellDropdown
        xJ = xJ + 1
    Next

    Application.Undo

    xJ = 1
    For Each xRg In Target
        xArrCheck2(xJ) = xRg.Validation.InCellDropdown
        xJ = xJ + 1
    Next

    xBol = False
    For xJ = 1 To xCount
        If xArrCheck2(xJ) <> xArrCheck1(xJ) Then
            xBol = True
            Exit For
        End If
    Next

    If xBol Then
       MsgBox "The selected cells containg data validation drop-down lists, no pasting allowed."
    Else
        xJ = 1
        For Each xRg In Target
            xRg.Value = xArrValue(xJ)
            xJ = xJ + 1
        Next

    End If

    Application.EnableEvents = True
End Sub

4. 按下 Alt + Q 鍵退出 Microsoft Visual Basic 應用程式視窗。

5. 當您嘗試將內容貼上到帶有下拉列表的儲存格時,會彈出一個對話框提醒您不允許進行貼上操作。請參閱截圖:

When you paste content to a cell with drop down list, a dialog box will pop up

備註:此 VBA 僅適用於單一儲存格的貼上操作。如果您複製並貼上多個儲存格,則該功能將不起作用。

輕鬆在 Excel 中創建帶有核取方塊的下拉列表:

給下拉列表增加複選框工具可以幫助您根據需求輕鬆在指定區域、當前工作表、當前工作簿或所有已開啟的工作簿中創建帶有核取方塊的下拉列表。
Kutools for Excel 30-天全功能免費試用版!


相關文章:

如何在 Excel 中創建帶有多個核取方塊的下拉列表?
許多 Excel 使用者傾向於創建帶有多個核取方塊的下拉列表,以便每次從列表中選擇多個項目。實際上,您無法使用資料驗證來創建帶有多個核取方塊的列表。在本教程中,我們將向您展示兩種方法來在 Excel 中創建帶有多個核取方塊的下拉列表。本教程提供了該問題的解決方案。

在 Excel 中從另一個工作簿創建下拉列表
在同一工作簿內的工作表之間創建資料驗證下拉列表非常容易。但如果所需的列表數據位於另一個工作簿中,該怎麼辦?在本教程中,您將詳細學習如何在 Excel 中從另一個工作簿創建下拉列表。

在 Excel 中創建可搜尋的下拉列表
對於具有眾多值的下拉列表,找到合適的值並不容易。之前我們介紹了一種在下拉框中輸入首字母時自動完成下拉列表的方法。除了自動完成功能外,您還可以使下拉列表可搜尋,以提高在下拉列表中查找適當值的工作效率。要使下拉列表可搜尋,請嘗試本教程中的方法。

在 Excel 下拉列表中選擇值時自動填充其他儲存格
假設您已經根據 B8:B14 儲存格範圍的值創建了下拉列表。當您從下拉列表中選擇任何值時,您希望 C8:C14 儲存格範圍內的相應值能夠自動填充到某個選定的儲存格中。為了解決這個問題,本教程中的方法將對您有所幫助。

更多關於下拉列表的教程...

最佳辦公效率工具

🤖 Kutools AI 助手:基於智能執行方式革新數據分析:智能執行   |  生成代碼  |  創建自訂公式  |  分析數據並生成圖表  |  調用 Kutools 函數
熱門功能查找、標記重複值或識別重複項   |  刪除空行   |  合併列或單元格而不丟失數據   |   四捨五入無需公式 ...
高級 LOOKUP多條件 VLookup    多值 VLookup  |   多表查找   |   模糊查找 ....
高級下拉列表快速創建下拉列表   |  依賴下拉列表   |  多選下拉列表 ....
列管理器添加特定數量的列  |  移動列  |  切換隱藏列的可見狀態  |  比較區域和列 ...
特色功能網格聚焦   |  設計檢視   |   增強編輯欄    工作簿與工作表管理器   |  資源庫(自動文本)   |  日期提取器   |  合併資料   |  加密/解密儲存格    按列表發送電子郵件   |  超級篩選   |   特殊篩選(篩選粗體/斜體/刪除線...) ...
頂級 15 種工具集12 個文本工具添加文本刪除特定字符、...)   |   50+ 圖表 類型甘特圖、...)   |   40+ 實用 公式基於生日計算年齡、...)   |   19 個插入工具插入QR碼根據路徑插入圖片、...)   |   12 個轉換工具金額轉大寫匯率轉換、...)   |   7 個合併與分割工具高級合併行分割儲存格、...)   |   ... 還有更多

使用 Kutools for Excel 提升您的 Excel 技巧,體驗前所未有的高效。 Kutools for Excel 提供超過 300 種高級功能來提高生產力並節省時間。  點擊這裡獲取您最需要的功能...


Office Tab 將標籤式界面帶到 Office,讓您的工作更加輕鬆

  • 在 Word、Excel、PowerPoint、Publisher、Access、Visio 和 Project 中啟用標籤式編輯和閱讀。
  • 在同一窗口的新標籤中打開和創建多個文檔,而不是在新窗口中。
  • 將您的生產力提高 50%,每天為您減少數百次鼠標點擊!