Note: The other languages of the website are Google-translated. Back to English

如何防止在Excel中使用下拉列表复制和粘贴单元格?

对于具有数据验证下拉列表的单元格,当从另一个单元格复制内容并将其粘贴到该单元格时,该下拉列表将消失并替换为新的粘贴内容。 在某些情况下,您想防止将其他内容复制和粘贴到带有下拉列表的单元格上,您将如何处理? 在本文中,您将获得处理此问题的VBA方法。

防止在Excel中使用下拉列表复制和粘贴单元格


防止在Excel中使用下拉列表复制和粘贴单元格

1.使用要防止复制和粘贴的下拉列表单元格打开工作表。

2。 按 其他 + F11 同时打开 Microsoft Visual Basic应用程序 窗口。

3。 在里面 Microsoft Visual Basic应用程序 窗口,在左窗格中双击当前工作表名称,然后将下面的VBA代码复制并粘贴到代码编辑器中。 看截图:

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。 按 其他 + Q 退出键 Microsoft Visual Basic应用程序 窗口。

5.当您将内容粘贴到带下拉列表的单元格时,将弹出一个对话框,提醒您不允许粘贴。 看截图:

备注:此VBA仅适用于单单元格粘贴。 如果您复制并粘贴到多个单元格中,它将无法正常工作。

使用Excel中的复选框轻松创建下拉列表:

新的 带有复选框的下拉列表 实用程序 Kutools for Excel 可以帮助您根据需要在指定范围,当前工作表,当前工作簿或所有打开的工作簿中轻松创建带有复选框的下拉列表。
下载完整功能 30- 现在免费试用 Kutools for Excel!


相关文章:

如何在Excel中使用多个复选框创建下拉列表?
许多Excel用户倾向于创建带有多个复选框的下拉列表,以便每次都从列表中选择多个项目。 实际上,您无法使用数据验证功能创建带有多个复选框的列表。 在本教程中,我们将向您展示两种在Excel中创建带有多个复选框的下拉列表的方法。 本教程提供了解决问题的方法。

在Excel中从另一个工作簿创建下拉列表
在工作簿中的工作表之间创建数据验证下拉列表非常容易。 但是,如果数据验证所需的列表数据位于另一个工作簿中,您将怎么办? 在本教程中,您将详细了解如何从Excel中的另一个工作簿创建拖放列表。

在Excel中创建可搜索的下拉列表
对于具有众多价值的下拉列表,找到合适的价值并非易事。 以前,我们已经介绍了一种在下拉框中输入第一个字母时自动完成下拉列表的方法。 除了自动完成功能之外,您还可以使下拉列表可搜索,以提高在下拉列表中查找适当值时的工作效率。 为了使下拉列表可搜索,请尝试本教程中的方法。

在Excel下拉列表中选择值时自动填充其他单元格
假设您已经基于单元格区域B8:B14中的值创建了一个下拉列表。 在下拉列表中选择任何值时,都希望在选定单元格中自动填充单元格范围C8:C14中的相应值。 为了解决该问题,本教程中的方法将对您有所帮助。

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


最佳办公效率工具

Kutools for Excel解决了您的大多数问题,并使您的生产率提高了80%

  • 重用: 快速插入 复杂的公式,图表 以及您以前使用过的任何东西; 加密单元 带密码 创建邮件列表 并发送电子邮件...
  • 超级公式栏 (轻松编辑多行文本和公式); 阅读版式 (轻松读取和编辑大量单元格); 粘贴到过滤范围...
  • 合并单元格/行/列 不会丢失数据; 拆分单元格内容; 合并重复的行/列...防止细胞重复; 比较范围...
  • 选择重复或唯一 行; 选择空白行 (所有单元格都是空的); 超级查找和模糊查找 在许多工作簿中; 随机选择...
  • 确切的副本 多个单元格,无需更改公式参考; 自动创建参考 到多张纸; 插入项目符号,复选框等...
  • 提取文字,添加文本,按位置删除, 删除空间; 创建和打印分页小计; 在单元格内容和注释之间转换...
  • 超级滤镜 (将过滤方案保存并应用于其他工作表); 高级排序 按月/周/日,频率及更多; 特殊过滤器 用粗体,斜体...
  • 结合工作簿和工作表; 根据关键列合并表; 将数据分割成多个工作表; 批量转换xls,xlsx和PDF...
  • 超过300种强大功能. 支持 Office / Excel 2007-2021 和 365。支持所有语言。 在您的企业或组织中轻松部署。 完整功能 30 天免费试用。 60 天退款保证。
kte选项卡201905

Office选项卡为Office带来了选项卡式界面,使您的工作更加轻松

  • 在Word,Excel,PowerPoint中启用选项卡式编辑和阅读,发布者,Access,Visio和Project。
  • 在同一窗口的新选项卡中而不是在新窗口中打开并创建多个文档。
  • 每天将您的工作效率提高50%,并减少数百次鼠标单击!
officetab底部
按评论排序
注释 (12)
还没有评分。 成为第一位评论!
该评论由网站上的主持人最小化
这可行,但是当我粘贴值时,这允许不在下拉列表中的数据。 限制不在列表中的任何值的任何方式。
该评论由网站上的主持人最小化
嗨Dilip,你能解决这个问题吗,我也有类似的问题。 我必须允许复制,仅粘贴数据验证单元格中的下拉值,其他我必须限制。 你能分享你的解决方案。 谢谢饶
该评论由网站上的主持人最小化
嗨,当我运行这个宏时,我得到了这个调试错误“Application.Undo”。 请尽快解决这个问题
该评论由网站上的主持人最小化
嗨,上面提到的 vba 代码没有运行。请解决。
该评论由网站上的主持人最小化
Private Sub Worksheet_Change(ByVal Target As Range) Dim xValue As String Dim xCheck1 As String Dim xCheck2 As String If Target.Count > 1 Then Exit Sub End If Application.EnableEvents = False xValue = Target.Value On Error Resume Next xCheck1 = Target。 Validation.InCellDropdown On Error GoTo 0 Application.Undo On Error Resume Next xCheck2 = Target.Validation.InCellDropdown On Error GoTo 0 If xCheck1 = xCheck2 Then Target = xValue Else MsgBox "不允许粘贴!" End If Application.EnableEvents = True End Sub 当从不同的工作簿或工作表复制时,此宏不起作用,那么请告诉我如何避免这些事情
该评论由网站上的主持人最小化
非常感谢你 !! 对我来说很好用!!! 复制到单个单元格受到限制。 但如果我复制一个单元格列表并粘贴..,则接受粘贴。 让我看看我能不能把它调好..无论如何谢谢
该评论由网站上的主持人最小化
Jepson,您是否设法解决了复制和粘贴到多个单元格的问题? 提前致谢!
该评论由网站上的主持人最小化
嗨Dilip,你能解决使用粘贴值允许数据的问题吗..我也面临同样的问题..请帮我解决这个问题
该评论由网站上的主持人最小化
嗨 Dilip,您能否解决使用粘贴值允许数据的问题
该评论由网站上的主持人最小化
您是否设法解决了复制和粘贴到多个单元格的问题? 提前致谢!
该评论由网站上的主持人最小化
不,我没有弄清楚。 一段时间后我没有尝试解决。
该评论由网站上的主持人最小化
我可以工作,但是在您输入代码后您无法撤消任何操作。 不允许后退一步。
这里还没有评论
留下你的意见
以访客身份发帖
×
评价此帖子:
0   产品特性
建议地点

关注我们

版权所有 © 2009 - extendoffice.com。 | 版权所有。 供电 ExtendOffice。 | 网站地图
Microsoft和Office徽标是Microsoft Corporation在美国和/或其他国家的商标或注册商标。
受Sectigo SSL保护