Как вставить столбец в Excel VBA без вставки содержимого из буфера обмена - PullRequest
0 голосов
/ 11 октября 2018

1) Я копирую содержимое (значение = 143) из Листа 1

2) Я перехожу к Листу 2

3) Вставляю новый столбец в диапазоне ("B1")

4) Excel заполняет весь новый столбец 143. И я этого не хочу.Я хочу, чтобы это был новый пустой столбец.

Я знаю, что могу обойтись с application.cutcopymode, но когда я прохожу макрос с помощью F8, он не работает.

Так что мне нужно предложениео том, как с этим справиться.

Я видел комментарий на форуме, чтобы вставить колонку перед копированием, но я не хочу нарушать порядок моего алгоритма, поэтому я ищу лучший способсделайте это.

Лист1:

123
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160 

Лист2:

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

Ответы [ 2 ]

0 голосов
/ 11 октября 2018

используйте 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 = ...

0 голосов
/ 11 октября 2018

Когда вы делаете:

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

Range("A4") относится к диапазону листа, в котором хранится ваш макрос, необязательно Sheet1.

Не использовать Activateесли вы действительно не хотите активировать лист.Сделайте это вместо:

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

With Worksheets("Sheet2").Range("B1")
    .EntireColumn.Insert
    .PasteSpecial Paste:=xlPasteValues
End With
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...