vba 代码。粘贴范围内的值而不是整列
vba code. pastes values in range instead of whole column
有人可以帮我解决以下问题:)
问题:我有以下代码在 A 列的 Budget sheet 中找到 textA,复制该行...找到具有相同 textA 的 sheet 并粘贴到 d4:d15。但是,它是通过 D 列粘贴的,而不仅仅是在该范围内。
帮助:获取 vba 仅复制预算 sheet 的 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
感谢任何帮助。
您应该将 Rows(intRow & ":" & intRow).Copy
更改为 Range("B" & intRow & ":M" & intRow).Copy
因为您的第一个代码是复制整行然后粘贴。使用第二个代码,您只需从 B 列复制到 M。
而且我不知道这是否是您想要的,但您正在乘以粘贴的值。
提示:
- 你应该避免 How to avoid using Select in Excel VBA。所以你声明了工作表和范围。
- 尝试使用 Range.Copy 复制 this way 并使用转置粘贴。
- 尝试使用 Range.Find Method
的示例
- 如果你试图摆脱 Select,你也应该替代:.Select/.Activate/Selection/Activecell/Activesheet/Activeworkbook
有人可以帮我解决以下问题:)
问题:我有以下代码在 A 列的 Budget sheet 中找到 textA,复制该行...找到具有相同 textA 的 sheet 并粘贴到 d4:d15。但是,它是通过 D 列粘贴的,而不仅仅是在该范围内。
帮助:获取 vba 仅复制预算 sheet 的 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
感谢任何帮助。
您应该将 Rows(intRow & ":" & intRow).Copy
更改为 Range("B" & intRow & ":M" & intRow).Copy
因为您的第一个代码是复制整行然后粘贴。使用第二个代码,您只需从 B 列复制到 M。
而且我不知道这是否是您想要的,但您正在乘以粘贴的值。
提示:
- 你应该避免 How to avoid using Select in Excel VBA。所以你声明了工作表和范围。
- 尝试使用 Range.Copy 复制 this way 并使用转置粘贴。
- 尝试使用 Range.Find Method 的示例
- 如果你试图摆脱 Select,你也应该替代:.Select/.Activate/Selection/Activecell/Activesheet/Activeworkbook