Vba 仅粘贴列中的最后一段代码
我对这个软件比较陌生,真的需要一只手。我使用Ditta将多个项目存储在剪贴板上,并为它们提供了快捷方式。使用这个脚本,我试图让它使用快捷键一次粘贴所有复制的项目。我已经分别测试了每一段代码,它可以正常工作。但当我尝试一起运行时,它只运行最后一个块。有人知道为什么会这样吗Vba 仅粘贴列中的最后一段代码,vba,excel,Vba,Excel,我对这个软件比较陌生,真的需要一只手。我使用Ditta将多个项目存储在剪贴板上,并为它们提供了快捷方式。使用这个脚本,我试图让它使用快捷键一次粘贴所有复制的项目。我已经分别测试了每一段代码,它可以正常工作。但当我尝试一起运行时,它只运行最后一个块。有人知道为什么会这样吗 Sub Data() ActiveCell.Select SendKeys "^4", True Application.Wait (2000) ActiveCell.Offset(0, 1).
Sub Data()
ActiveCell.Select
SendKeys "^4", True
Application.Wait (2000)
ActiveCell.Offset(0, 1).Range("A1").Select
SendKeys "^3", True
Application.Wait (1000)
ActiveCell.Offset(0, 1).Range("A1").Select
SendKeys "^2", True
Application.Wait (1000)
ActiveCell.Offset(0, 1).Range("A1").Select
SendKeys "^1", True
Application.Wait (1000)
End Sub
我不知道问题到底出在哪里,但似乎都是等待同上插入值。您的代码只是不等待粘贴完成 我为此写了一个变通方法:
只需对原始代码进行注释 无论如何,您的等待是错误的
应用程序。等待(2000)
并不是您所期望的。正确的方法是:
Application.Wait(Now + TimeValue("0:00:02"))
使其等待2秒。给定的时间不是等待的时间量,而是宏等待的绝对时间。有关详细信息,请参阅。是否确实要在一行中选择完全相同的内容3次?不,理想情况下,我希望它在一列中发布每一条数据。例如Name=A1,Email=B1ect@Peh,我错过了偏移量eded Range(“A1”)把我甩了。@JoeDavison在每一行
之后尝试一个DoEvents
。或者如果在每一行SendKeys
之后都不起作用。也许你甚至可以省略这些Wait
行。正如我之前所说的ActiveCell.Offset(0,1).选择
应该足够了。这很好,我已经清楚地看到它工作了好几次,它确实只粘贴了前一两个。为什么会这样be@JoeDavison当同上中的4个粘贴槽中有一个为空时,可能会出现这种情况。然后此解决方案将不起作用。是否总是使用相同的数据执行此操作?是否有4个粘贴槽中填充了data(非空)在Ditto中?还要确保在代码运行时不要单击任何位置。您能告诉我它是否可以在Ditto中4个插槽内的任何数据集上复制,还是偶尔会在相同的4个数据集上复制?我正在从web复制多个数据点,理想情况下希望我能够更快地将其移动到excel。要回答您的问题,请回答“是”很多地方都有人填写,而且都包含不同的数据。你能想出更快更有效的方法吗?
Application.Wait(Now + TimeValue("0:00:02"))