Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/9: Рейтинг темы: голосов - 9, средняя оценка - 4.78
5 / 4 / 1
Регистрация: 03.04.2018
Сообщений: 113
1

Создать цикл с остановкой и последующим продолжением

03.03.2021, 21:04. Показов 1844. Ответов 7

Author24 — интернет-сервис помощи студентам
Всем доброго времени суток! Максимально простой макрос: копирует ячейки из первого листа во второй. Но вопрос заключается в следующем: можно ли сделать в цикле MsgBox, чтобы пользователь выбирал - продолжать цикл или прервать его? Если выбирает продолжить, то копируется дальше, и так до тех пор, пока не дойдет до конца цикла, в конце тоже должен быть MsgBox (поэтому может быть стоит его поднять выше, после копирования, но перед вставкой). Либо пользователь нажимает кнопку отмены (или кнопку "Нет", если там только две кнопки) и в итоге цикл завершается, пользователь меняет данные на первом листе и снова запускает макрос. Надеюсь, понятно объяснил.
Кликните здесь для просмотра всего текста
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
Sub MMM()
    Dim a, b, c, d As String
    Dim ms As Integer
    LR = ThisWorkbook.Sheets("List").Cells(Rows.Count, 1).End(xlUp).Row
    For i = 4 To LR
        a = ThisWorkbook.Sheets("One").Cells(i, 1)
        b = ThisWorkbook.Sheets("One").Cells(i, 2)
        c = ThisWorkbook.Sheets("One").Cells(i, 3)
        d = ThisWorkbook.Sheets("One").Cells(i, 4)
        ThisWorkbook.Sheets("Two").Cells(i, 1) = a
        ThisWorkbook.Sheets("Two").Cells(i, 2) = b
        ThisWorkbook.Sheets("Two").Cells(i, 3) = c
        ThisWorkbook.Sheets("Two").Cells(i, 4) = d
        If IsEmpty(ThisWorkbook.Sheets("One").Cells(i, 5)) = Falls Then
            ThisWorkbook.Sheets("Two").Cells(i, 5) = "Text"
        End If
'сюда пытаюсь вставить MsgBox 
        ms = MsgBox("Выберите кнопку!", 323, "Выбор кнопки")
        If ms = 6 Then
        Next
            MsgBox "Вы нажали кнопку: Да"
        ElseIf ms = 7 Then
            MsgBox "Вы нажали кнопку: Нет"
        Else
            MsgBox "Вы нажали кнопку: Отмена"
        End If
    Next i
End Sub
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.03.2021, 21:04
Ответы с готовыми решениями:

Приостановка всех Task с последующим их продолжением
Интересует вопрос, как приостановить все таски на 10 секунд, кроме таска, в котором я вызываю...

Прерывание функции с последующим продолжением её выполнения
Доброго времени суток! Имеется некая функция, которая представляет из себя бесконечный...

Создать программу по всем 3 видам циклов...цикл с параметром,цикл с условием,цикл,и цикл с предусловием...
Найти сумму чисел 1 в квадрате до 10 c квадрате...операцию возведению в степень не использовать...

Цикл: Сгенерировать числа от 0 до 99999999, с последующим их выводом...
Помогите пожалуйста написать программу для Паскаль АВС задача: сгенерировать числа от 0 до...

7
5 / 4 / 1
Регистрация: 03.04.2018
Сообщений: 113
04.03.2021, 07:21  [ТС] 2
Может быть так будет понятней...
Миниатюры
Создать цикл с остановкой и последующим продолжением  
0
help
4427 / 4080 / 812
Регистрация: 13.04.2015
Сообщений: 8,930
04.03.2021, 08:58 3
Цитата Сообщение от serviktor Посмотреть сообщение
323
Это какой стиль? Как понять?

Добавлено через 14 минут
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
Sub MMM()
    Dim a, b, c, d As String
    Dim ms As VbMsgBoxResult
    LR = ThisWorkbook.Sheets("List").Cells(Rows.Count, 1).End(xlUp).Row
    For i = 4 To LR
        a = ThisWorkbook.Sheets("One").Cells(i, 1)
        b = ThisWorkbook.Sheets("One").Cells(i, 2)
        c = ThisWorkbook.Sheets("One").Cells(i, 3)
        d = ThisWorkbook.Sheets("One").Cells(i, 4)
        ms = MsgBox("Вcтавить???", VbMsgBoxStyle.vbYesNoCancel, "Выбор кнопки")
        If ms = vbYes Then
           'Вставляем
            ThisWorkbook.Sheets("Two").Cells(i, 1) = a
            ThisWorkbook.Sheets("Two").Cells(i, 2) = b
            ThisWorkbook.Sheets("Two").Cells(i, 3) = c
            ThisWorkbook.Sheets("Two").Cells(i, 4) = d
            If IsEmpty(ThisWorkbook.Sheets("One").Cells(i, 5)) = Falls Then
                ThisWorkbook.Sheets("Two").Cells(i, 5) = "Text"
            End If
        ElseIf ms = vbNo Then
            'Не вставляем
        Else
           'Выходим
            Exit Sub
        End If
   Next i
    
End Sub
Добавлено через 3 минуты
serviktor, есть еще такая замечательная(в умелых руках) вещь, как GoTo
С помощью нее можно прыгать по меткам в коде.
1
5 / 4 / 1
Регистрация: 03.04.2018
Сообщений: 113
04.03.2021, 09:06  [ТС] 4
I can, Да я уже сделал то, что хотел, сделал выход из цикла при помощи Exit For
Кликните здесь для просмотра всего текста
Visual Basic
1
2
3
4
5
6
7
8
9
        a = MsgBox("Если всё верно, нажмите в окне кнопку Yes", 4, "Если ошибка - кнопка No")
        If a = 6 Then
 
        ElseIf a = 7 Then
            MsgBox "Измените данные и запустите макрос"
            Exit For
        Else
            MsgBox "Вы нажали кнопку: Отмена"
        End If

Но вопрос теперь в другом: можно ли MsgBox сделать vbModeless, как это делается на формах? В документе у меня форм нет, есть только макрос и MsgBox, хотелось бы чтоб можно было спокойно переключаться по листам и смотреть данные, но в данный момент активен только MsgBox и дальше него ничего сделать нельзя.
0
help
4427 / 4080 / 812
Регистрация: 13.04.2015
Сообщений: 8,930
04.03.2021, 09:22 5
Цитата Сообщение от serviktor Посмотреть сообщение
можно ли MsgBox сделать vbModeless, как это делается на формах
Сделайте из формы MsgBox
0
5 / 4 / 1
Регистрация: 03.04.2018
Сообщений: 113
04.03.2021, 09:34  [ТС] 6
Цитата Сообщение от I can Посмотреть сообщение
Сделайте из формы MsgBox
а без использования формы, чтоб не усложнять ничего, и оставить окно MsgBox, только сделать возможным переключение на эксель и листы?
Кликните здесь для просмотра всего текста
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Sub Кнопка2_Щелчок()
    Dim a As String
    Dim ms As Integer
    For i = 2 To 10
        a = ThisWorkbook.Sheets("List").Cells(i, 1)
        ms = MsgBox("Если всё верно, нажмите в окне кнопку Yes", 4, "Проверьте данные ") 'сделать так, чтобы можно было смотреть данные на листе, но без использования формы
        If ms = 6 Then
        ElseIf ms = 7 Then
            MsgBox "Измените данные и запустите макрос"
            Exit For
        Else
            MsgBox "Вы нажали кнопку: Отмена"
        End If
        ThisWorkbook.Sheets("Two").Cells(i, 1) = a
    Next i
End Sub
0
help
4427 / 4080 / 812
Регистрация: 13.04.2015
Сообщений: 8,930
04.03.2021, 10:00 7
Цитата Сообщение от serviktor Посмотреть сообщение
чтоб не усложнять ничего
Это как раз и есть "усложнение", придётся скакать с бубном вокруг API.
0
help
4427 / 4080 / 812
Регистрация: 13.04.2015
Сообщений: 8,930
04.03.2021, 10:18 8
Лучший ответ Сообщение было отмечено serviktor как решение

Решение

serviktor, Лист Microsoft Excel.rar
1
04.03.2021, 10:18
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.03.2021, 10:18
Помогаю со студенческими работами здесь

Цикл в хранимой процедуре по последующим 4-м записям, по увеличивающейся дате
Здравствуйте! Есть хранимая процедура которая рассчитывает среднее значение просто проходя по...

Можно ли в WPF (С#) динамически создать 3D модель с последующим ее редактированием?
Можно ли в WPF (С#) динамически создать 3D модель с последующим ее редактированием? И как то...

Создать матрицу смежности для графа с последующим нахождением оптимальных путей алгоритмом Дейкстры
Привет программистам. Мне нужно создать матрицу смежности для графа с последующим нахождением...

Как создать форму для заполнения дня рождения и с последующим выводом полных лет
Как создать форму с заполнением даты рождения и последующим выводом полных лет человека с помощью...

Цикл: Не могу создать цикл для switch
не могу создать цикл для switch

Создать макрос для заполнения из формы экзаменационной ведомости с последующим автоматическим вычислением среднего балла успеваемости


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru