Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Копирование со скрытого листа / 11 сообщений из 11, страница 1 из 1
17.09.2009, 18:58:47
    #36202589
Татик
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Копирование со скрытого листа
Есть макрос
Sub test()

Sheets("TOTAL").Visible = True

Sheets("TOTAL").Select
Sheets("TOTAL").Range("A20:AA2000").Select
Selection.ClearContents
Range("A1").Select

'Sheets("Вопросы").Visible = True

Sheets("Вопросы").Select
For Each r In Range("F:F").Rows
If r.Cells(, 1) = "FALSE" Then
r.Cells(, -3).Copy

Sheets("TOTAL").Select
Range("A1").Select

a = 20
b = 2
Do
If Worksheets("TOTAL").Cells(a, b) = "" Then Exit Do
a = a + 2

Loop
ActiveCell(a, b).Select
ActiveSheet.Paste

End If
Next r

End Sub

Стоит скрыть лист "Вопросы" перестает дальше выполнять действия
если этот лист отобразить и закрыть команду 'Sheets("Вопросы").Visible = True - все работает.
Почему не хочет работать со скрытым листом, можа где ошибка.
Ошибку не выдает тупо останавливается.
помогите плиз великие програмисты!!!
...
Рейтинг: 0 / 0
17.09.2009, 19:21:07
    #36202630
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Копирование со скрытого листа
Не надо использовать метод .Select и объект Selection
...
Рейтинг: 0 / 0
17.09.2009, 20:08:21
    #36202697
Татик
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Копирование со скрытого листа
White Owl,
ой, а как надо то, я по другому не умею...(((
...
Рейтинг: 0 / 0
17.09.2009, 22:44:46
    #36202871
Hugo121
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Копирование со скрытого листа
Так попробуй:
Код: plaintext
1.
2.
3.
For Each r In Sheets("Вопросы").Range("F:F").Rows
If r.Cells(,  1 ) = "FALSE" Then
r.Cells(, - 3 ).Copy
...
Рейтинг: 0 / 0
17.09.2009, 23:17:56
    #36202896
Hugo121
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Копирование со скрытого листа
И вообще тут можно пооптимизировать (закомментированное лишнее, можно выкинуть):
Код: 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.
Sub test2()

Sheets("TOTAL").Visible = True

Sheets("TOTAL").Select
Sheets("TOTAL").Range("A20:AA2000").Select
Selection.ClearContents
Range("A1").Select

'Sheets("Вопросы").Visible = True

'Sheets("Вопросы").Select
For Each r In Application.Intersect(Worksheets("Вопросы").Range("F:F"), Worksheets("Вопросы").UsedRange)
If r.Cells(,  1 ) = "FALSE" Then
'r.Cells(, -3).Copy 'это больше вообще не нужно

'Sheets("TOTAL").Select
'Range("A1").Select

a =  20 
b =  2 
Do
If Worksheets("TOTAL").Cells(a, b) = "" Then Exit Do
a = a +  2 
Loop

r.Cells(, - 3 ).Copy Sheets("TOTAL").Cells(a, b)
'ActiveSheet.Paste 'это больше вообще не нужно

End If
Next r

End Sub
...
Рейтинг: 0 / 0
17.09.2009, 23:34:46
    #36202906
Татик
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Копирование со скрытого листа
Hugo121,
Ух тыыыыыы заработало!!!
Большущее спасибо! хочу быть такой же умной!

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

еще раз спасибо! обнимаю
...
Рейтинг: 0 / 0
18.09.2009, 09:46:37
    #36203221
Hugo121
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Копирование со скрытого листа
Кстати, интересный эффект, может кто объяснит - дома последний код работал на ура, сегодня на работе не пашет. Заменил
If r.Cells(, 1) = "FALSE" Then
на
If r.Cells(, 1) = "False" Then
заработало! Причём в F6 именно FALSE!
...
Рейтинг: 0 / 0
18.09.2009, 10:02:19
    #36203271
Hugo121
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Копирование со скрытого листа
Татиктолько теперь после запуска макросов перед этим, этот гад отказывается работать

Попробуй в начале кода определить переменные:
Dim a, b As Integer
Dim r As Range
...
Рейтинг: 0 / 0
18.09.2009, 10:08:06
    #36203283
Hugo121
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Копирование со скрытого листа
Лучше
Dim a, b As Long
(если рядов больше 32767 предвидится)
...
Рейтинг: 0 / 0
19.09.2009, 01:24:24
    #36205484
Letter_Q
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Копирование со скрытого листа
Hugo121Кстати, интересный эффект, может кто объяснит - дома последний код работал на ура, сегодня на работе не пашет. Заменил
If r.Cells(, 1) = "FALSE" Then
на
If r.Cells(, 1) = "False" Then
заработало! Причём в F6 именно FALSE!Используй False без кавычек. Так будет правильно.
...
Рейтинг: 0 / 0
20.09.2009, 15:41:49
    #36206319
Deggasad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Копирование со скрытого листа
Hugo121Лучше
Dim a, b As Long
(если рядов больше 32767 предвидится)

Это не определяет a и b как Long
Это определяет a как variant и b как Long
Чтобы определить обе переменные как Long
Код: plaintext
Dim a As Long, b As Long
...
Рейтинг: 0 / 0
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Копирование со скрытого листа / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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