如何使用 vba 选择粘贴范围

Posted

技术标签:

【中文标题】如何使用 vba 选择粘贴范围【英文标题】:How to select the range for pasting using vba 【发布时间】:2012-09-27 08:30:56 【问题描述】:

我编写了一些代码来选择特定的行并使用 paste-special 属性将其按列粘贴。它工作正常我的代码是:

lngRow = Me.TextBox4.Value
strCol = Me.TextBox5.Value
Set rng = Range("A:A").Find(What:=lngRow, LookIn:=xlValues, LookAt:=xlWhole)
If rng Is Nothing Then
MsgBox "Value not found in row 1", vbExclamation
Else
 Range(rng, rng.End(xlToRight)).Copy
 Range("A1:E3").Columns(strCol).Offset(, 1).PasteSpecial Transpose:=True
 Range("A1:E3").Rows(1).Copy
 Range("A1:E3").Columns(strCol).PasteSpecial Transpose:=True
endif

这里的问题是我正在使用 范围(rng,rng.End(xlToRight))。复制 复制值 对于粘贴,我使用 Range("A1:E3").Columns(strCol).Offset(, 1).PasteSpecial Transpose:=True。

如何粘贴所有复制的值?因为如果值在 F 列中,则此宏将不会粘贴这些值。

【问题讨论】:

请在 else 部分更详细地解释你的代码,正如你想要完成的那样。我现在猜想,你想复制一个特定的整行,转置到一列,到不同的列 - 我正确吗? 好吧,基于此,我给了你答案。友情提醒:如果您的问题能帮助您解决问题,请接受您的一些答案。 【参考方案1】:

此代码将从第 1 行开始粘贴整行(如果找到)转置到给定的列。

如果它必须从不同的行或列开始,您应该能够适应。

lngRow = Me.TextBox4.Value
strCol = Me.TextBox5.Value

Set rng = Range("A:A").Find(What:=lngRow, LookIn:=xlValues, LookAt:=xlWhole)
If rng Is Nothing Then
MsgBox "Value not found in row 1", vbExclamation
Else
 Range(Rng, Rng.End(xlToRight)).Copy
 Cells(1, strCol).PasteSpecial Transpose:=True
End If

【讨论】:

非常感谢但我想将值粘贴到列中(strcol).offset(,1)。 好的,没问题,所以你只是用Columns(strCol).Offset(, 1).PasteSpecial Transpose:=True而不是Cells(1, strCol).PasteSpecial Transpose:=True 你好,谁能告诉我如何在 vba 中将 intger 转换为chartcer?。我正在使用 Chr(dest + 64) 但它没有显示正确的提前谢谢。

以上是关于如何使用 vba 选择粘贴范围的主要内容,如果未能解决你的问题,请参考以下文章

在 Excel 中使用 VBA,如何在 Outlook 中粘贴表格然后将表格转换为文本?

excel vba 选择性粘贴并设置为真文本?

搜索日期并复制并粘贴整行:VBA

如何防止excel关闭复制选框

VBA-如何选择具有值的列单元格

VBA 在 Outlook 中粘贴带有图表的特定 excel 范围