无法使用 VBA 粘贴到合并的单元格中

Posted

技术标签:

【中文标题】无法使用 VBA 粘贴到合并的单元格中【英文标题】:Can't paste into merged cell using VBA 【发布时间】:2015-10-10 00:45:09 【问题描述】:

我正在编写一个宏,它将数据复制到模板表单,以不同的名称保存表单,然后使用相同的空白表单进行复制。一些数据被复制到合并的单元格中。奇怪的是,我目前使用的代码适用于第一次、第二次和第三次迭代,但不适用于第四次。

我已经尝试了所有我能想到的方法,但还是不行。它给了我错误消息“我们不能对合并的单元格执行此操作”。

这是不会粘贴到单元格中的代码。

'     
' Transfers Component 1 Data
'
    Range("B27").Select
    Selection.Copy
    Windows("Protected_Form.xls").Activate
    Range("B61:D61").Select
    Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
        xlNone, SkipBlanks:=False, Transpose:=False

下面是之前在程序中粘贴到合并单元格中的代码:

'
' Transfers Component 1 Data
'
    Range("AV194").Select
    Selection.Copy
    Windows("Protected_Form.xls").Activate
    Range("B61:D61").Select
    Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
        xlNone, SkipBlanks:=False, Transpose:=False

如您所见,唯一改变的是从哪个单元格复制数据。

编辑: 刚刚意识到我在某些条件下在程序的早期使用了相同的代码(不工作的部分)。我只是尝试在这些条件下运行它并且它有效。

现在我非常困惑。请随时要求我澄清一些事情,我知道这很令人困惑。

另外:我知道.Select。很慢,我不在乎。

【问题讨论】:

错误不言自明。在您的源工作簿或目标工作簿中,您都有一个合并单元格。 程序的其他部分粘贴到合并的单元格中。 刚刚看到你的编辑,你还有同样的问题吗? 您是否尝试过完全限定您的范围参考?也许在程序的早期 Range("B27").Select 是在一张纸上选择,而 Range("B27").Select 稍后会从另一张纸上选择。另外,不要强调它,但是... .Select 不仅速度慢,而且往往会导致意想不到的结果,我怀疑这是你现在遇到的问题。 太好了,很高兴我能帮上忙!我会将其添加为答案,如果您觉得有帮助,欢迎您接受 【参考方案1】:

您是否尝试过完全限定您的范围引用?也许在程序的早期 Range("B27").Select 是在一张纸上选择,而 Range("B27").Select 稍后会从另一张纸上选择。

另外,不要强调它,但是... .Select 不仅速度慢,而且往往会导致意想不到的结果,我怀疑这是你现在遇到的问题。我知道您在评论中说您没有时间(奢侈)来摆脱它,但是如果您不得不调试、更改、修改、更新,现在花在清理代码上的时间将为您节省大量时间等等。我不会把它看作是一件苦差事,而是编写好的 VBA 代码的必要条件!

【讨论】:

以上是关于无法使用 VBA 粘贴到合并的单元格中的主要内容,如果未能解决你的问题,请参考以下文章

vba粘贴不起作用

Vba找到第一个空单元格并平均它上面的4个单元格并将值粘贴到另一个单元格中

无法粘贴 - Excel VBA

MAC VBA尝试从每个工作表中剪切一个单元格并粘贴到下一个空单元格中的另一张表中

合并复制如何初始化发布和订阅

搜索包含文本的单元格并在下一个空白单元格中粘贴值