powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Избавиться от Копирования-Вставки в цикле...
6 сообщений из 6, страница 1 из 1
Избавиться от Копирования-Вставки в цикле...
    #34511601
Granata005
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Делаю в большом цикле копирование-вставку строк между листами, при этом Excel скрываю и он работает в фоне... но как только я воспользуюсь буфером обмена - всё летит в тартарары....

какую бы придумать альтернативу копированию - вставке?

пробовал вот так:
Код: plaintext
1.
2.
f = Columns("B:B")
Sheets("Лист2").Select
Columns("C:C") = f
но так форматирование и формулы не сохраняются...

а избавиться хочу от использования буфера в:
Код: plaintext
1.
2.
3.
4.
5.
Sheets("Главная книга 1").Select
Rows(Trim(Str(NumberString -  1 )) & ":" & Trim(Str(NumberString +  32 ))).Select
Selection.Copy
Sheets("Temp").Select
Range("A1").Select
ActiveSheet.Paste

здаётся мне что ответ или очень прост, а я парюсь..... или не очень красив (т.к. мне нужно слаборесурсоёмкое решение)....
...
Рейтинг: 0 / 0
Избавиться от Копирования-Вставки в цикле...
    #34511677
Фотография k-nike
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. По поводу метода .Select. Изучите данный топик по поводу рациональности его использования.
Код: plaintext
Sheets("Лист2").Columns("C:C") = Columns("B:B")
Смотрите, как ваш пример из 3-х действий (строк) делается одним. Причем именно одим дейсвтием, а не последовательными командами записанными в одну строку!


2.По проблеме. Ранее обсуждалось.
Даже если в самом методе .Copy явно задавать Destination (место копирования), все равно задействуется клипборд. Хотя в учебниках, которые я читал, пишут, что при этом клипборд не используется. Сам топик сейчас лень искать. Поэтому, скорее всего, подойдет только предложенный вами 1-ый способ, только еще надо будет таким же макаром все свойства ячеек копировать.

...
Рейтинг: 0 / 0
Избавиться от Копирования-Вставки в цикле...
    #34511793
vbapro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
k-nike2.По проблеме. Ранее обсуждалось.
Даже если в самом методе .Copy явно задавать Destination (место копирования), все равно задействуется клипборд. Хотя в учебниках, которые я читал, пишут, что при этом клипборд не используется. Сам топик сейчас лень искать. Поэтому, скорее всего, подойдет только предложенный вами 1-ый способ, только еще надо будет таким же макаром все свойства ячеек копировать.
и да и нет: клипборд, явно, вроде как, не используется. Но при копировании он слетает, как и при изменении Application.Calculation. Данные копируются корректно, только теряется предыдущее содержимое буфера. Так, что для копирования с форматом вполне подойдет.
...
Рейтинг: 0 / 0
Избавиться от Копирования-Вставки в цикле...
    #34511828
Granata005
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
т.е. если я где-нибудь в проводнике нажму Ctr+c во время выполнения макроса, то при использовании Дэстинэйшн всё скопируется корректно невзирая на моё вмешательство в содержимое буфера...?
...
Рейтинг: 0 / 0
Избавиться от Копирования-Вставки в цикле...
    #34511916
vbapro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Granata005т.е. если я где-нибудь в проводнике нажму Ctr+c во время выполнения макроса, то при использовании Дэстинэйшн всё скопируется корректно невзирая на моё вмешательство в содержимое буфера...?да
в качестве теста запусти в новой книге вот этот макрос и попробуй что-нибудь скопировать во время его рыботы
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
Sub Macro2()
Dim i As Long
    With Range("B1")
        .Borders(xlDiagonalDown).LineStyle = xlNone
        .Borders(xlDiagonalUp).LineStyle = xlNone
        With .Borders(xlEdgeLeft)
            .LineStyle = xlContinuous
            .Weight = xlThin
            .ColorIndex = xlAutomatic
        End With
        With .Borders(xlEdgeTop)
            .LineStyle = xlContinuous
            .Weight = xlThin
            .ColorIndex = xlAutomatic
        End With
        With .Borders(xlEdgeBottom)
            .LineStyle = xlContinuous
            .Weight = xlThin
            .ColorIndex = xlAutomatic
        End With
        With .Borders(xlEdgeRight)
            .LineStyle = xlContinuous
            .Weight = xlThin
            .ColorIndex = xlAutomatic
        End With
        With .Interior
            .ColorIndex =  35 
            .Pattern = xlSolid
        End With
    End With
    Range("B1").FormulaR1C1 = "1"
    
    For i =  1  To  2000 
        Range("B1").Copy Destination:=Range("A" & i)
        DoEvents
    Next i
    Rows("1:1").AutoFilter
    Rows("1:1").AutoFilter Field:= 1 , Criteria1:="<>1", Operator:=xlAnd
End Sub
...
Рейтинг: 0 / 0
Избавиться от Копирования-Вставки в цикле...
    #34511992
Granata005
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да... всё хорошо... не проскакивает.... моментальный дэстинэйшн..
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Избавиться от Копирования-Вставки в цикле...
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]