vba代码。粘贴范围内的值而不是整列

时间:2017-09-20 14:42:53

标签: excel-vba range copy-paste vba excel

有人可以帮助我解决以下问题:)

问题:我有以下代码,在A列的预算表中找到textA,复制该行...找到具有相同textA和d4:d15的工作表。然而,它是粘贴在D列而不仅仅是在该范围内。

帮助:获取vba仅复制B:预算表中的M行范围,仅粘贴到第d4列:d15。

Sheets("Budget").Select
Columns("A:A").Select
On Error Resume Next
Selection.Find(What:="phh budget", After:=ActiveCell, LookIn:= _
xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:= _
xlNext, MatchCase:=False, SearchFormat:=False).Activate
If Err.Number = 91 Then
MsgBox "ERROR: 'PHH budget' could not be found."
End
End If


intRow = ActiveCell.Row
Rows(intRow & ":" & intRow).Copy
Sheets("PHH").Select
range("D3").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=True

range("B1").Copy
Application.CutCopyMode = False
Selection.Copy
range("D3:D15").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlMultiply, _
    SkipBlanks:=False, Transpose:=False
Columns("D:D").EntireColumn.AutoFit

我感谢任何帮助。

1 个答案:

答案 0 :(得分:2)

您应该将Rows(intRow & ":" & intRow).Copy更改为Range("B" & intRow & ":M" & intRow).Copy

因为使用您的第一个代码,您正在复制整个行然后粘贴。使用第二个代码,您只需从B列复制到M。

我不知道这是否符合您的意图,但您要将粘贴的值相乘。

提示:

  1. 你应该避免How to avoid using Select in Excel VBA。所以你声明了工作表和范围。
  2. 尝试使用Range.Copy复制this way并使用Transpose复制。
  3. 尝试使用Range.Find Method
  4. 的示例
  5. 如果您试图摆脱选择,您还应该替换:.Select/.Activate/Selection/Activecell/Activesheet/Activeworkbook