Если вы хотите узнать, принадлежит ли объект к особому типу, напишите следующий код:
Если TypeOf obj является ListItem, то...
Если вы хотите получить имя типа объекта, используйте:
MsgBox «Этот элемент» и TypeName(obj)
Управление длинными цикламиКогда программа застряла в длинном цикле, вы не можете нажимать какие-либо командные кнопки или клавиши. Пользователям очень сложно это контролировать. Может быть, пользователь больше не хочет выполнять цикл и выходит, нажав кнопку «Отмена»? Как решить эту проблему? Ответ: используйте команду DoEvents! То есть выполните команду DoEvents в начале цикла, как показано в следующем коде:
Дим и пока
Для я = от 1 до 1000000
DoEvents
...
Дальше я
На самом деле команду DoEvents не обязательно размещать в первой строке, ее можно разместить в любом месте цикла. При этом другие части программы, такие как командная кнопка, завершающая цикл, получат еще один шанс принять события щелчка.
Заставьте длинные циклы выполняться быстрееЯ обнаружил, что в целом лучше использовать функцию API GetInputState для проверки значения входной очереди программы. Я не знаю, почему оператор If ускоряет выполнение кода, но на самом деле он работает нормально.
Таким образом, следующая строка кода может быть
DoEvents
Заменить на
Если GetInputState(), то DoEvents
Попробуйте!
На самом деле причина этого в том, что оператор DoEvents позволяет любому приложению выполнять связанные события, а не только вашей собственной программе. После добавления решения GetInputState вы сможете принимать действия по событиям только из своей собственной программы!
Упростите выбор случаяДавайте рассмотрим следующий пример: построение строки по клику пользователя на различные комбинации тегов:
lbl(0) = "Привет"
lbl(1) = "Комментирую: м"
lbl(2) = "Счастлив"
lbl(3) = "Грустно"
...
sub lbl_click (индекс как целое число)
строка$ = строка$+lbl(индекс).заголовок
Затем вам нужно написать серию операторов выбора случая для анализа этой строки...
выберите строку регистра$
кейс «Привет, я комментирую: m Happy»
сделай что-нибудь
кейс «Привет, я комментирую: м»
это будет ошибка...
еще случай
сделай что-нибудь еще
конец выбора
Как видите, это будет очень сложно, особенно если тегов много и требуются проверки легальности операций слияния.
Чтобы решить эту проблему, я создал массив такой же длины, как количество тегов:
arraylbl(n) как целое число
Начальное значение массива — 1, а затем значение каждого элемента равно предыдущему значению, умноженному на 2 (значение*2), вот так: 1 2 4 8 16 32 64... Таким образом, комбинация каждой пары меток будет иметь еще одно уникальное значение»
lbl(0) + lbl(1) = 1 + 2 = 3
lbl(0) + lbl(1) + lbl(4) = 1 + 2 + 16 = 19
Теперь при щелчке по метке к переменной добавляется соответствующее ей значение lblarray(). Таким образом, на основе нескольких чисел вы можете просто написать оператор выбора случая:
выберите регистр IsLegal
случай 3
Примечание: строка действительна.
позвонить товар
дело 19
Примечание: строка действительна.
позвонить товар
в противном случае
Примечание: недействительно
звонить бесполезно
конец выбора
Ха-ха, иногда оцифровка персонажей может дать неожиданно хороший эффект!