Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.02.2013, 17:14   #11
Number_30
Пользователь
 
Регистрация: 30.01.2013
Сообщений: 15
По умолчанию

Скрипт, вижу... было дело)
Number_30 вне форума Ответить с цитированием
Старый 07.02.2013, 21:19   #12
Number_30
Пользователь
 
Регистрация: 30.01.2013
Сообщений: 15
По умолчанию

Вопрос - а как добавить опцию - если ни одна строка из листбокса не выбрана, и нажимаем на кнопку копировать, то выходило бы сообщение "Выберите данные для копирования".

Пробовал код:
Код:
dim test2 as Variant

For lItem = 0 To ListBox1.ListCount - 1
If Me.ListBox1.Selected(lItem) = False Then
test2 = 1
next lItem
end if

if test 2 = 1 then
MsgBox "Выберите данные"
end if
exit sub
не работает.
Number_30 вне форума Ответить с цитированием
Старый 07.02.2013, 21:24   #13
Скрипт
Форумчанин
 
Регистрация: 24.12.2012
Сообщений: 776
По умолчанию

Код не тестировал, поэтому код может содержит какую-нибудь ошибку.
Код:
    'Boolean означает, что в переменной могут быть только
        'два слова: True и False.
    Dim myFlag As Boolean
    
    For lItem = 0 To ListBox1.ListCount - 1
        If Me.ListBox1.Selected(lItem) = True Then
            myFlag = True
            'Выходим из цикла, т.к. надо было узнать,
                'есть ли хоть один выбранный элемент.
            Exit For
        End If
    Next lItem
    
    If myFlag = False Then
        MsgBox "Выберите данные", vbExclamation
        Exit Sub
    End If
Скрипт вне форума Ответить с цитированием
Старый 08.02.2013, 09:20   #14
Number_30
Пользователь
 
Регистрация: 30.01.2013
Сообщений: 15
По умолчанию

Спасибо! Работает как часы!
Number_30 вне форума Ответить с цитированием
Старый 08.02.2013, 09:35   #15
Скрипт
Форумчанин
 
Регистрация: 24.12.2012
Сообщений: 776
По умолчанию

Number_30, свежим взглядом глянул. Нерациональный код в сообщении #13: если много элементов, а первый флажок встречается где-нибудь на тысячной строке, то код потом снова будет всё просматривать.

Логичнее тогда вот так:
Код:
    'Boolean означает, что в переменной могут быть только
        'два слова: True и False.
    Dim myFlag As Boolean
    
    For lItem = 0 To ListBox1.ListCount - 1
        If Me.ListBox1.Selected(lItem) = True Then
            'Пометка, что какой-то флажок выбран.
            myFlag = True
            'Действие.
        End If
    Next lItem
    
    If myFlag = False Then
        MsgBox "Выберите данные", vbExclamation
        Exit Sub
    End If
Или для удобства чтения кода - чтобы разграничить операции: одна операция ищет флажки, а другая операция переносит данные:
Код:
    Dim myStart As Long
    
    '1. Помещаем в переменную "myStart" число "-1", чтобы
        'потом по этому числу определить - был найден флажок или нет.
    myStart = -1
    
    '2. Поиск флажка.
    For lItem = 0 To ListBox1.ListCount - 1 Step 1
        If Me.ListBox1.Selected(lItem) = True Then
            'Пометка, что какой-то флажок выбран.
            myStart = lItem
            'Первый флажок найден - выходим из цикла
                'по поиску флажков, т.к. надо было найти хотя бы один.
            Exit For
        End If
    Next lItem
    
    '3. Проверка, что есть выбранные флажки.
    If myStart = -1 Then
        MsgBox "Выберите данные", vbExclamation
        Exit Sub
    End If
    
    '4. Работающая часть кода.
    For lItem = myStart To ListBox1.ListCount - 1 Step 1
        If Me.ListBox1.Selected(lItem) = True Then
            'Перенос данных.
        End If
    Next lItem

Последний раз редактировалось Скрипт; 08.02.2013 в 09:38.
Скрипт вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Цикл с условиями и выход из цикла KJ_ya Microsoft Office Excel 5 20.01.2013 14:43
iostream указатель работает только внутри цикла Egyptorium Помощь студентам 2 04.01.2012 13:54
Переделать цикл. Код внутри =) Silverstone Помощь студентам 4 21.12.2011 22:12
Цикл for. Переход в начало цикла по условию. webber9989 Общие вопросы Delphi 3 07.07.2011 11:26
цикл for i:=0 to count -1 do. Уменьшать счётчик i внутри цикла... Человек_Борща Общие вопросы Delphi 10 01.07.2011 21:11