首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在excel VBA中插入列而不从剪贴板粘贴内容

如何在excel VBA中插入列而不从剪贴板粘贴内容
EN

Stack Overflow用户
提问于 2018-10-11 11:39:37
回答 2查看 155关注 0票数 0

1)我从Sheet1复制内容(value=143)

2)我去Sheet2

3)我在range("B1")中插入一个新列

4) excel用143填充整个新列。我不想这样。我希望它是一个新的空列。

我知道我可以使用application.cutcopymode,但是当我使用F8对宏进行遍历时,它不起作用。

所以我需要一个关于如何处理它的建议。

我在论坛上看到一条评论,要求在复制之前先插入专栏,但我不喜欢打乱算法的顺序,所以我正在寻找一种更好的方法来做到这一点。

Sheet1:

代码语言:javascript
复制
123
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160 

Sheet2:

代码语言:javascript
复制
wda    awd
awd    daw
adw    daw
awd    wda
daw    wda
daw    awd
wda    afw
wda    weg
awd    weg
afw    w
weg    rq
weg    qrq
w      qefqw
rq     e
qrq    he
qefqw  rgw
e      rq
he     3qg
rgw    q3
rq     tq
3qg    ga

和宏:

代码语言:javascript
复制
Sub testing()

Application.CutCopyMode = False

Worksheets("Sheet1").Activate
Range("A4").Copy

Worksheets("Sheet2").Activate
Range("B1").EntireColumn.Insert
Range("b1").PasteSpecial Paste:=xlPasteValues

End Sub
EN

回答 2

Stack Overflow用户

发布于 2018-10-11 11:51:01

当你这样做的时候:

代码语言:javascript
复制
Worksheets("Sheet1").Activate
Range("A4").Copy

Range("A4")是指存储宏的工作表范围,不一定是Sheet1

除非你真的想激活工作表,否则不要使用激活。改为执行以下操作:

代码语言:javascript
复制
Worksheets("Sheet1").Range("A4").Copy

With Worksheets("Sheet2").Range("B1")
    .EntireColumn.Insert
    .PasteSpecial Paste:=xlPasteValues
End With
票数 0
EN

Stack Overflow用户

发布于 2018-10-11 14:01:23

使用Range对象的Value属性仅粘贴范围内容

代码语言:javascript
复制
Sub testing()

    With Worksheets("Sheet2")
        .Range("B1").EntireColumn.Insert
        Intersect(.UsedRange, .Columns(2)).Value = Worksheets("Sheet1").Range("A4").Value
    End With

End Sub

请注意,我使用Intersect(.UsedRange, .Columns(2)).Value = ...将值粘贴限制到B列单元格,这些单元格的相邻列中填充了值

如果您确实需要填充整个列,那么只需使用.Columns(2).Value = ...

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52751809

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档