Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Избавиться от Копирования-Вставки в цикле... / 6 сообщений из 6, страница 1 из 1
08.05.2007, 10:26:16
    #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
08.05.2007, 10:50:27
    #34511677
k-nike
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Избавиться от Копирования-Вставки в цикле...
1. По поводу метода .Select. Изучите данный топик по поводу рациональности его использования.
Код: plaintext
Sheets("Лист2").Columns("C:C") = Columns("B:B")
Смотрите, как ваш пример из 3-х действий (строк) делается одним. Причем именно одим дейсвтием, а не последовательными командами записанными в одну строку!


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

...
Рейтинг: 0 / 0
08.05.2007, 11:24:29
    #34511793
vbapro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Избавиться от Копирования-Вставки в цикле...
k-nike2.По проблеме. Ранее обсуждалось.
Даже если в самом методе .Copy явно задавать Destination (место копирования), все равно задействуется клипборд. Хотя в учебниках, которые я читал, пишут, что при этом клипборд не используется. Сам топик сейчас лень искать. Поэтому, скорее всего, подойдет только предложенный вами 1-ый способ, только еще надо будет таким же макаром все свойства ячеек копировать.
и да и нет: клипборд, явно, вроде как, не используется. Но при копировании он слетает, как и при изменении Application.Calculation. Данные копируются корректно, только теряется предыдущее содержимое буфера. Так, что для копирования с форматом вполне подойдет.
...
Рейтинг: 0 / 0
08.05.2007, 11:31:14
    #34511828
Granata005
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Избавиться от Копирования-Вставки в цикле...
т.е. если я где-нибудь в проводнике нажму Ctr+c во время выполнения макроса, то при использовании Дэстинэйшн всё скопируется корректно невзирая на моё вмешательство в содержимое буфера...?
...
Рейтинг: 0 / 0
08.05.2007, 11:48:44
    #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
08.05.2007, 12:05:41
    #34511992
Granata005
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Избавиться от Копирования-Вставки в цикле...
Да... всё хорошо... не проскакивает.... моментальный дэстинэйшн..
...
Рейтинг: 0 / 0
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Избавиться от Копирования-Вставки в цикле... / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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