객체가 특별한 유형인지 알고 싶다면 다음 코드를 작성하세요.
TypeOf obj가 ListItem이면...
객체 유형의 이름을 얻으려면 다음을 사용하십시오.
MsgBox "항목은 " & TypeName(obj)입니다.
긴 루프 제어프로그램이 긴 루프에 빠지면 명령 단추나 키를 클릭할 수 없습니다. 이는 사용자가 제어하기가 매우 어렵습니다. 사용자가 더 이상 루프 실행을 원하지 않고 취소 버튼을 클릭하여 종료하는 것은 아닐까요? 이 문제를 해결하는 방법? 대답은 다음과 같습니다. DoEvents 명령을 사용하십시오! 즉, 다음 코드와 같이 루프 시작 부분에서 DoEvents 명령을 실행합니다.
내가 오랫동안 어둡게
i = 1 ~ 1000000의 경우
Do이벤트
...
다음은 내가
실제로 DoEvents 명령은 라인 1에 배치할 필요가 없으며 루프의 어느 곳에나 배치할 수 있습니다. 이렇게 하면 루프를 종료하는 명령 버튼과 같은 프로그램의 다른 부분에서 클릭 이벤트를 허용할 또 다른 기회를 갖게 됩니다.
긴 루프를 더 빠르게 실행나는 일반적으로 API 함수 GetInputState를 사용하여 프로그램의 입력 큐 값을 확인하는 것이 더 낫다는 것을 발견했습니다. If 문이 코드 실행 속도를 높이는 이유는 모르겠지만 실제로는 잘 작동합니다.
따라서 다음 코드 줄은 다음과 같습니다.
Do이벤트
다음으로 교체
GetInputState()이면 DoEvents
한번 시도해 보세요!
실제로 그 이유는 DoEvents 문을 사용하면 자신의 프로그램뿐만 아니라 모든 응용 프로그램이 관련 이벤트를 수행할 수 있기 때문입니다. GetInputState 판단을 추가한 후에는 자신의 프로그램에서만 이벤트 작업을 수락할 수 있습니다!
Select Case를 더 쉽게 만들기다음 예를 살펴보겠습니다. 사용자가 다양한 태그 조합을 클릭하여 문자열을 작성하는 것입니다.
lbl(0) = "안녕하세요"
lbl(1) = "내가 댓글을 달았습니다: m "
lbl(2) = "행복해요"
lbl(3) = "슬픔"
...
sub lbl_click (정수형 인덱스)
문자열$ = 문자열$+lbl(색인).캡션
그런 다음 이 문자열을 분석하려면 일련의 Select Case 문을 작성해야 합니다.
대소문자 문자열$ 선택
케이스 "안녕하세요. 저는 댓글을 남깁니다: m Happy"
뭔가를 해라
케이스 "안녕하세요. 저는 댓글을 남깁니다: m"
이건 오류겠지...
다른 경우
다른 일을 해라
선택 종료
보시다시피 이는 매우 복잡합니다. 특히 태그가 많고 병합 작업에 대한 적법성 확인이 필요한 경우 더욱 그렇습니다.
이 문제를 해결하기 위해 태그 수와 동일한 길이의 배열을 만들었습니다.
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() 값이 변수에 추가됩니다. 이렇게 하면 몇 가지 숫자를 기반으로 간단히 Select Case 문을 작성할 수 있습니다.
사례 선택 IsLegal
사례 3
참고: 문자열이 유효했습니다.
물건을 부르다
사례 19
참고: 문자열이 유효했습니다.
물건을 부르다
케이스
참고: 유효하지 않음
전화 안 받아
선택 종료
ㅎㅎ 가끔 문자를 디지타이징하면 생각지도 못한 좋은 효과가 나올 때도 있어요!