【发布时间】:2015-01-15 00:35:18
【问题描述】:
我有两个电子表格。第一个电子表格在同一列但连续的行中具有部件号和描述。我需要从第一个电子表格中获取零件编号和说明,然后将它们(仅值,无格式)转置到第二个电子表格中,以便现在零件编号和说明位于连续列中,而不是行中。为了解决这个问题,我在 Worksheet_Change() 函数中添加了以下 VBA 代码。
If Not Application.Intersect(Target, MatNumDesc) Is Nothing Then
If Application.CutCopyMode = xlCopy Then
Application.Undo
Target.PasteSpecial Paste:=xlPasteValues, Transpose:=True
End If
End If
MatNumDesc 是一系列单元格,我将在其中粘贴部件号。如果我有 2 种以上的材料和描述一切正常,我的问题是只有一种材料和描述。在这些情况下,我会得到一个我不想要的重复条目。
为了清楚起见,我在两个单独文件的电子表格之间手动复制和粘贴值(使用 Ctrl-C 和 Ctrl-V)。我没有使用任何 VBA 代码来尝试从一张纸复制到另一张纸,因为不值得一提,它不适用于我的设置。
此外,据我观察,我面临的实际问题与 Excel 的默认行为有关。我复制的是 2 行 1 列数据。转置后变为 2 列和 1 行,但是在运行 .Application.Undo 操作后,选择了 2 行和 2 列,Excel 然后在其上运行 .PasteSpecial 操作。至少从我能够观察到的情况来看。
【问题讨论】:
-
一时兴起,我尝试将
Target.PasteSpecial替换为.Range("G" & Target.Row).PasteSpecial(以及使该工作所需的代码位,我将省略),到目前为止它似乎工作正常。