Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
-1 / 0 / 0
Регистрация: 03.06.2018
Сообщений: 8
1

Наладить работу двух макросов на один диапазон (конфликтуют)

03.12.2018, 12:51. Показов 1252. Ответов 12
Метки нет (Все метки)

Здравствуйте ув. форумчане.
Нужна помощь. Есть два макроса который действую в одном и том же диапазоне, после активации второго макроса, вылетает естественно ошибка. Не знаю как ее правильно исправить.
1 макрос в этом диапазоне постоянно при удалении какого то текста удаляет пустую ячейку так сказать
2 макрос просто переносит слова помеченные желтым цветом.
Вот вопрос:
Как сделать, что бы они нормально друг с другом взаимодействовали без ошибок?
Просьба более точные примеры, т.к я нубас в ВБА.

P.S еще такая просьба, если будет не сложно то подскажите как сделать, что бы второй макрос переносил желтые фразы, сразу как они появляются в том диапазоне.
Вложения
Тип файла: xls Пример1.xls (46.0 Кб, 7 просмотров)
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.12.2018, 12:51
Ответы с готовыми решениями:

Как организовать параллельную работу двух и более макросов?
Может, кто заморачивался. Есть макрос, срабатывающий по приходу письма: вытаскивает данные,...

Наладить работу фильтра
Помогите пожалуйста!!! не нашел подходящей темы. Имеется таблица "специалист" столбцы ...

Наладить работу функции
Надо сделать так, чтобы функция работала, а я совсем не разобрался. #include <iostream>...

Не могу наладить работу с XPOSED
Привет. Работаю в Android Studio 2.3.3. Решила поучиться, по тестировать. Хочу через Xposed...

12
94 / 37 / 15
Регистрация: 02.04.2015
Сообщений: 235
03.12.2018, 14:33 2
Поц, Вы имеете ввиду, 2-ой макрос переносит ячейки, помеченные желтым цветом в случае удаления?
0
-1 / 0 / 0
Регистрация: 03.06.2018
Сообщений: 8
03.12.2018, 14:46  [ТС] 3
Петр Аркадьевич, Нет. Вы чуть не так поняли. Смотрите:
1 макрос: он просто удаляет пустоты если они появляются.
2 макрос удаляет фразы которые помечаются желтым цветом.
Я помечаю желтым там какие либо фразы, и когда они появляются, второй макрос переносит эти желтые в столбец.
Но вот этот второй макрос как раз таки конфликтует с первым, запустите в примере этот второй макрос и увидите ошибку.
0
1468 / 1013 / 322
Регистрация: 11.07.2014
Сообщений: 3,624
03.12.2018, 15:39 4
Поц, число строк в эксель 2003 = 65536, что меньше ваших 100000
0
oh my god
1448 / 787 / 161
Регистрация: 05.01.2016
Сообщений: 2,307
Записей в блоге: 8
03.12.2018, 15:51 5
Я по своему сделал

После выполнения переноса:
Наладить работу двух макросов на один диапазон (конфликтуют)


после удаления
Наладить работу двух макросов на один диапазон (конфликтуют)


Visual Basic
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
39
40
41
42
43
44
Option Explicit
 
Sub Перенос()
    Dim i&
    Quickly 1
    For i = 5 To Cells(Rows.Count, 2).End(xlUp).Row
        With Cells(i, 2)
            If .Interior.ColorIndex <> xlNone Then
                .Cut Destination:=Cells(i, 5)
            End If
        End With
    Next
    Quickly 0
End Sub
 
 
Sub Удаление_со_сдвигом_вверх()
    Dim i&
    Quickly 1
    For i = Cells(Rows.Count, 2).End(xlUp).Row - 1 To 5 Step -1
        While Cells(i, 2).Value = 0
            DoEvents
            Cells(i, 2).Delete Shift:=xlUp
        Wend
    Next
    Quickly 0
End Sub
 
 
Sub Quickly(ByVal mode As Boolean)
    With Application
        If mode Then
            .ScreenUpdating = False
            .Calculation = xlCalculationManual
            .EnableEvents = False
            .DisplayAlerts = False
        Else
            .ScreenUpdating = True
            .Calculation = xlCalculationAutomatic
            .EnableEvents = True
            .DisplayAlerts = True
        End If
    End With
End Sub
0
oh my god
1448 / 787 / 161
Регистрация: 05.01.2016
Сообщений: 2,307
Записей в блоге: 8
03.12.2018, 16:00 6
С коментариями:
Кликните здесь для просмотра всего текста
Visual Basic
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
Sub Перенос()
    Dim i&
    Quickly 1 ' Включить ускорение работы Excel 1 и 0 возврат в норм. состояние
    For i = 5 To Cells(Rows.Count, 2).End(xlUp).Row
        With Cells(i, 2)
            If .Interior.ColorIndex <> xlNone Then 'Определяем цвет (если он не стандартный)
                .Cut Destination:=Cells(i, 5) ' Перенос в колонку E
            End If
        End With
    Next
    Quickly 0
End Sub
 
 
Sub Удаление_со_сдвигом_вверх()
    Dim i&
    Quickly 1
    'Просмотр колонки B снизу вверх
    For i = Cells(Rows.Count, 2).End(xlUp).Row - 1 To 5 Step -1
        While Cells(i, 2).Value = 0
            Cells(i, 2).Delete Shift:=xlUp
        Wend
    Next
    Quickly 0
End Sub
0
-1 / 0 / 0
Регистрация: 03.06.2018
Сообщений: 8
03.12.2018, 16:12  [ТС] 7
fever brain, вы чуть не поняли, нужно именно наладить работу двух мои макросов, у вас чуть не то что мне нужно.
Burk, что именно вы имеете ввиду?
0
1468 / 1013 / 322
Регистрация: 11.07.2014
Сообщений: 3,624
03.12.2018, 16:40 8
Поц, я имею ввиду , то что написал - вместо В100000 Е100000 в ваших рэйнджах поставьте максимум 65536, первая ошибка уберется. Вторая - вместо Field:=2 надо Field:=1, т.к. отсчет идет при задании диапазона от левой границы диапазона, а не листа. Уберется и вторая ошибка

Добавлено через 9 минут
Поц, кстати, по поводу КОНФЛИКТА макросов это ваши фантазии.
1
oh my god
1448 / 787 / 161
Регистрация: 05.01.2016
Сообщений: 2,307
Записей в блоге: 8
03.12.2018, 18:22 9
Цитата Сообщение от Поц Посмотреть сообщение
вы чуть не поняли, нужно именно наладить работу двух мои макросов
Это у тебя чуть не то, свои макросы можешь выбросить в мусорку, у меня ничего из твоего не работает
поэтому сделал по своему, если твои волшебные макросы еще должны чтото делать уж извини, не смог угадать

Добавлено через 4 минуты
Доказывай теперь почему я не прав, а то уйду.. и минус тебе оставлю
0
-1 / 0 / 0
Регистрация: 03.06.2018
Сообщений: 8
03.12.2018, 19:50  [ТС] 10
fever brain, Ну во первых, можно быть и вежливее к незнакомым людям, тыкать будете своим друзьям. Если вам так мои макросы не нравятся, то вас никто не просил свое мнение озвучивать в такой манере (и перед тем как называть что то мусором, сначала сделайте что то лучше этого мусора..). Вы сделали вообще не то что должно делаться.. или вы лучше знаете, что мне нужно сделать? В задаче было написано, что да как нужно сделать, вы начали фантазировать себе совсем другие вещи и сделали, что то хрен пойми для кого. Во вторых, вы даже нормально не посмотрели, что они делают, и сделали какую то фигню абы как.. которая даже и близко так не работает как мне нужно. Минус здесь скорее только вы получите. Если встали не с той ноги, то это не повод лаять на других людей. Более можете не отвечать на мое сообщение, т.к я читать все равно не буду, учитывая ваше неадекватное поведение.

P.S вас никто не просил писать заново и что то переделывать. Задача была: проверить ошибку в кооперативной работе этих макросов.

Добавлено через 14 минут
Burk, Я извиняюсь, немного не понял что вы имеете в виду под первой ошибкой, я вроде описывал только одну проблему) Была только проблема, что при активации второго макроса, в нем вылазит ошибка. Или вы заметили какую то ошибку с диапазонами? А что делать если мне к примеру нужны именно такие диапазоны в 100000?
0
-1 / 0 / 0
Регистрация: 03.06.2018
Сообщений: 8
03.12.2018, 19:58  [ТС] 11
Burk, Внес так же изменения рекомендованные вами, вроде уже сработало нормально, но почему то все сползло наверх на две клетки. Скриншот прикладываю.
Миниатюры
Наладить работу двух макросов на один диапазон (конфликтуют)  
0
oh my god
1448 / 787 / 161
Регистрация: 05.01.2016
Сообщений: 2,307
Записей в блоге: 8
03.12.2018, 20:31 12
Цитата Сообщение от Поц Посмотреть сообщение
Более можете не отвечать на мое сообщение, т.к я читать все равно не буду, учитывая ваше неадекватное поведение.
Не надо истерик, а поведение у меня и правда неадекватное
Цитата Сообщение от Поц Посмотреть сообщение
1 макрос в этом диапазоне постоянно при удалении какого то текста удаляет пустую ячейку так сказать
2 макрос просто переносит слова помеченные желтым цветом.
Если я не так понял то я неадекватен. Хотя после моей проделанной работы можно было подробнее указать на мои ошибки
Цитата Сообщение от Поц Посмотреть сообщение
у вас чуть не то что мне нужно.
а не так инфантильно, поэтому минус я тебе все-таки поставлю

Не по теме:

Не расстраивайся. Мне ставили отрицательные отзывы за менее безобидные сообщения

0
1468 / 1013 / 322
Регистрация: 11.07.2014
Сообщений: 3,624
04.12.2018, 04:52 13
Цитата Сообщение от Поц Посмотреть сообщение
такие диапазоны в 100000
работайте в Офис 2007 с такими диапазонами. Или используйте несколько страниц
Вторая ошибка в макросе два появится, если вы сделаете как у вас было Field:=2
Цитата Сообщение от Поц Посмотреть сообщение
сползло наверх на две клетки
Закрепите ваши первые 4 строки через меню Закрепить область, они будут всегда на экране какие есть. Т.е. создайте заголовок таблицы.
Ну а в штыки воспринимать послания, стиль которых вам не очень нравится, не стоит. Сначала лучше накопить опыт работы в экселе

Добавлено через 17 минут
А возможно ваш первый макрос удалил две первые строки, не разбирался в нём
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.12.2018, 04:52

Наладить работу RDLC-отчета в проекте
Помогите, люди добрые, побороть этого змия. Пытаюсь наладить работу RDLC-отчета в проекте VB.NET...

Никак не могу наладить работу плагина в Хроме
Хроме не проигырвает не какое видео. Лазил по сети и пробовал все варианты. Обновит палагины,...

Объединение нескольких макросов в один
Доброго времени суток. Пробую писать такой код: #define ATX_ENABLE_PORT B #define MY_PORT DDR ##...

Объединить несколько макросов в один
Здравствуйте! В книге два схожих макроса, необходимо их объединить в один для их одновременного...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru