Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何:允许用户从另一个excel实例粘贴单元格(Ctrl+;V,…),但仅粘贴值_Excel_Vba - Fatal编程技术网

如何:允许用户从另一个excel实例粘贴单元格(Ctrl+;V,…),但仅粘贴值

如何:允许用户从另一个excel实例粘贴单元格(Ctrl+;V,…),但仅粘贴值,excel,vba,Excel,Vba,随进度编辑 亲爱的社区: 我正在处理一个大的excel文件,为我和我的同事做一些计算。因为计算数据很多,并且是在范围(如“A1:H8”)中输入的,而不是单个单元格(如“A1”、“C1”、…),所以我希望用户能够将数据从相同或其他excel实例复制到我的文件中 问题(已编辑): 问题是,仅粘贴单元格就可以格式化目标单元格(即使它们受到格式化保护),必须避免这种情况。我搜索了很多在线讨论,最后编写了自己的代码,可以在同一个excel实例中的两个excel文件之间进行复制和粘贴。遗憾的是,如果我从另一

随进度编辑

亲爱的社区:

我正在处理一个大的excel文件,为我和我的同事做一些计算。因为计算数据很多,并且是在范围(如“A1:H8”)中输入的,而不是单个单元格(如“A1”、“C1”、…),所以我希望用户能够将数据从相同或其他excel实例复制到我的文件中

问题(已编辑):

问题是,仅粘贴单元格就可以格式化目标单元格(即使它们受到格式化保护),必须避免这种情况。我搜索了很多在线讨论,最后编写了自己的代码,可以在同一个excel实例中的两个excel文件之间进行复制和粘贴。遗憾的是,如果我从另一个实例复制单元格,它就不起作用了

代码:

这是我在“ThisWorkbook”中使用的代码:

Sub-PasteValuesOnly()
'如果在命名工作表中粘贴单元格,则仅粘贴值
'链接到宏菜单选项中的Ctrl+V
关于错误转到错误处理程序
作为射程的弱小目标
设定目标=选择
如果Target.Parent.Name为“Table1”,则
选择特别的
其他的
Selection.Paste特殊粘贴:=xlPasteValues
如果结束
错误处理程序:
出口接头
端接头
系统:

  • 视窗7
  • Excel 2010
除了代码之外,我还尝试了什么(新进展):

正如评论中提到的,我知道只允许用户粘贴值,但我无法让它工作(在一个Excel实例中复制和粘贴时,甚至不能在新文件中)。我试了整个工作簿和一张纸

有什么帮助(已编辑):

如果您能告诉我如何优化我的代码,这将非常有帮助,因此它也适用于两个实例。如果您知道当我在Siddharth Rout使用Excel 2010的解决方案中的
UndoList=Application.commandbar(“标准”).Controls(“&Undo”).List(1)
出现错误时该怎么办,这也会很有帮助。 否则,我希望每个解决方案,让我的用户像以前一样粘贴,但防止他们在粘贴时格式化单元格

先谢谢你


拉斯皮马努

经过长时间的互联网搜索,我在微软论坛上找到了。她的代码很简单,适用于CTRL+C/CTRL+V、在右键单击菜单上复制和粘贴、拖放,甚至两个excel实例

因为它从每一个单元格更改开始,然后返回到更改过的单元格或范围,所以我根据自己的需要对其进行了轻微的优化。现在,手动输入列表的用户不必每次按“enter”两次,他们希望进入下面的下一行

假设,标准用户通常会复制和粘贴,如果有一系列数据,他或她不想重新键入,我更改了代码,因此只有在更改了多个单元格时,模块子模块才会被激活(见下文)

解决方案:

在每个工作表中,必须防止格式化(修改):

Private子工作表\u更改(ByVal目标作为范围)
'更改范围时激活格式保护
如果Target.Cells.Count>1,则“如果更改了多个单元格…”。。。
调用工作表_Change_Protected(目标)“…激活保护
如果结束
端接头
在模块中(未修改):

子工作表\u更改\u受保护(ByVal目标作为范围)
'通过撤消粘贴并粘贴值,防止用户在单元格格式中随意擦除
唐娜·兰迪2018年11月26日
'可免费复制-感谢您的帽尖:)
Dim SavedVal作为变体
关于错误GoTo ErrHan
'保存粘贴的值供以后使用
SavedVal=Target.Value
'关闭事件以防止无限循环
Application.EnableEvents=False
'撤消用户的粘贴
应用程序。撤消
'设定目标值
Target.Value=SavedVal
错误退出:
'记住重新启用事件
Application.EnableEvents=True
出口接头
二郎:
恢复错误退出
端接头

非常感谢你,唐娜·兰迪

请看:非常感谢您提供的链接,但我已经知道了,无法让它工作。我会尽快再试一次。你对修改我的代码还有什么想法吗?我又试了一次。。。起初,我建立了一个新文件,只在“ThisWorkbook”中输入了Siddharth Rout的代码I。之后,我在“Sheet1”中尝试了代码II,也在一个新文件中。这两种选择都不起作用。也许是因为我的Excel 2010。调试时,它在
UndoList=Application.commandbar(“标准”)控件(“&Undo”).List(1)
处停止。你能帮我把它开起来吗?