1)我从Sheet1复制内容(值= 143)
2)我进入Sheet2
3)我在range(“ B1”)中插入新列
4)excel用143填充了整个新列。我不想要那样。我希望它是一个新的空列。
我知道我可以摆脱application.cutcopymode的束缚,但是当我使用F8行走宏时,它是行不通的。
所以我需要有关如何处理它的建议。
我在论坛上看到过有人在复制前先插入该列的评论,但我不想破坏算法的顺序,因此我正在寻找一种更好的方法来实现这一点。
Sheet1:
123
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
Sheet2:
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
和宏:
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
答案 0 :(得分:0)
当您这样做:
Worksheets("Sheet1").Activate
Range("A4").Copy
Range("A4")
是指您的宏存储在工作表的范围,不一定是Sheet1
。
除非您确实要激活工作表,否则不要使用“激活”。改为这样做:
Worksheets("Sheet1").Range("A4").Copy
With Worksheets("Sheet2").Range("B1")
.EntireColumn.Insert
.PasteSpecial Paste:=xlPasteValues
End With
答案 1 :(得分:0)
使用Value
对象的Range
属性仅粘贴范围内容
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 = ...