아래의 이 VBA 코드의 의미를 분석해 주세요. 모든 답을 물어보는 게 좋을 것 같아요.

개인? Sub? ListBox 1_Click ()'? ListBox 1_ Click 이벤트

범위 (MSTR)? =? 목록 상자 1. 값'< 셀 > 영역 (MSTR)=? ListBox 1 값, mstr 은 클릭하는 셀을 가리키지만 글로벌 변수를 정의하는 것을 보지 못했습니다.

목록 상자 1. 보이십니까? =? 가짜? ListBox 1 숨김

텍스트 상자 1. 보이십니까? =? 가짜? 텍스트 상자 1 숨김

끝? "Sub" 하위 프로그램 종료

개인? Sub? "textbox1_ change ()" textbox1변경 이벤트.

열어? 잘못? 이력서? 언제 다음 번에 실수입니까? 가? 그리고 나서

나. 목록 상자 1. 알겠어요? Listbox 1 에서 값을 지웁니다.

암담한가? 아? ARR 1 (),? K? 로? 정수,? Sss? 로? 문자열' 정의 변수? ARR, ARR 1()- 활성 배열, k? 뭐 때문에? 정수 값, SSS? 뭐 때문에? 문자열

아르? =? 워크시트 (데이터). Range("F 1:F2000 ")'? ARR= 데이터 테이블의 f 1:F2000 값 (이 문장은 문제가 있어야 하며 f 1:g2000 일 수 있음).

Sss? =? 나. 텍스트 상자 1. 텍스트' 는 텍스트 컨트롤에 입력한 내용을 변수 SSS 에 할당합니다.

레딤? ARR 1( 1? 어디 가? UBound(ARR))' 배열 arr 1 의 범위를 재정의하시겠습니까? 1? 배열 arr 에 위 첨자

뭐 때문에? X? =? 1? 어디 가? UBound(ARR)' 변수 범위를 X= 1 에서 (ARR) 로 설정합니다

만약? Asc(sss)? & gt? 0? S 만약? Sss 의 이니셜을 숫자로 변환한 후 > 0? 그런 다음 실행합니까?

만약? ARR(X,? 1)? 예를 들면? UCase(sss)? & amp? "*"? S 만약? ARR(X, 1)? 비슷한가요? 대문자 (SSS). 와일드카드 문자 * 를 추가하여 일치시킵니다.

K? =? K? +? 1' k = k+ 1 여기서 k 는 카운터입니다.

ARR 1(k)? =? ARR(X,? 2)' 배열 arr 1 의 k 번째 값 (즉, 현재 마지막 값) =arr(x, 2).

끝? 판단 과정이 끝나면.

또한, 또한

만약? ARR(X,? 2)? 예를 들면? Sss? & amp? "*"? S 만약? ARR(X, 2)? 비슷한가요? Sss? 와일드카드 추가 (이 단락은 단순화할 수 있음)

K? =? K? +? 1'k=k+ 1

ARR 1(k)? =? ARR(X,? 2)'ARR 1(k)=ARR(X, 2)

끝? 판단 과정이 끝나면.

끝? 판단 과정이 끝나면.

다음? 다음 x

K? =? 0'k=0

나. 목록 상자 1. 목록? =? ARR 1'? Listbox 의 목록 항목 값 = arr 1.

끝? "Sub" 하위 프로그램 종료

개인? Sub? 워크시트 _SelectionChange(ByVal? 목표? 로? Range)' 워크시트 선택이 변경되면 이 절차를 수행합니다. 워크시트 선택 이벤트입니다.

만약? 목표. 칼럼? =? 1? 그리고는요. 목표. 줄을 서다. 세어? =? 1? S 만약? Target = 1 에 대한 열 레이블? 그리고는요. 목표 행 수 개수 = 1? 그런 다음 실행합니까? : 즉, 선택한 셀이 a 열에 있고 셀 패턴 필드가 열인 경우

MSTR? =? 목표. Address'MSTR=? 대상의 주소: 이 변수는 맨 위에 참조가 있으므로 공용 변수를 정의해야 합니다.

텍스트 상자 1. 탑? =? ActiveCell 입니다. 최고? 텍스트 상자 맨 위 1 =? 활성 셀의 맨 위

목록 상자 1. 탑? =? 텍스트 상자 1. 탑? +? 텍스트 상자 1. 키? 목록 상자 맨 위 1 =? TextBox 1+ 의 맨 위? TextBox 1 높이: 이 두 문장은 textbox+listbox 가 나타나는 위치를 설정합니다. 먼저 Visible=true 를 호출해야 합니다. 그런 다음 컨트롤이 나타나는 위치를 설정합니다. 왼쪽도 설정해야 합니다. Witdh 와 같은 속성.

목록 상자 1. 보이십니까? =? 정말? ListdBox 1 디스플레이

텍스트 상자 1. 보이십니까? =? 정말? 텍스트 상자 1 표시

그렇지 않으면.

목록 상자 1. 보이십니까? =? 가짜? ListBox 1 숨김

텍스트 상자 1. 보이십니까? =? 가짜? 텍스트 상자 1 숨김

끝? 판단 과정이 끝나면.

끝? "Sub" 하위 프로그램 종료

Sub? AA ()' 서브루틴? AA ()

MsgBox? Len("A ")? & amp? "? -"? & amp? LenB("A ")' 가 메시지 상자를 팝업해서? 1-2 입니다. 여기에 특별한 의미가 있는지 모르겠다!

끝? 서브루틴 종료 ARR? =? 워크시트 (데이터). 범위 ("F 1:F2000")

이것은

ARR(X,? 2)? 아니요, 이 코드를 실행할 수 있다고 확신합니까?

전반적으로 좀 어지럽다. 네가 복제한 관계인지 모르겠다.

또한 textbox 는 텍스트 상자이고 listbox 는 목록 상자입니다. 。

위의 코드에 대한 일반적인 생각은 다음과 같습니다.

현재 워크시트에서 a 열의 셀 (셀 수가 2 개 미만) 을 클릭하면 목록 상자와 텍스트 상자 컨트롤이 표시됩니다. 。 텍스트 상자의 위쪽이 셀의 아래쪽과 평평합니다. 목록 상자의 맨 위 뒤에는 텍스트 맨 아래가 있습니다. 。

텍스트 상자 값이 변경되면 textboxchange 이벤트를 실행하고 (문자를 입력하거나 삭제할 때마다 실행됨), 데이터 테이블의 f 1:f2000 영역에서 현재 입력 문자의 시작 부분을 찾아 모든 내용을 목록 상자 컨트롤에 추가합니다. 。 (중간에 배열이 전송, 중복 없음)

마우스를 클릭하면 목록 상자에서 컨텐츠를 선택합니다. 목록 상자 클릭 이벤트를 트리거하여 (기분이 좋지 않아서 두 번 클릭 이벤트로 바뀜) 마지막 활성 셀에 내용을 추가합니다. 컨트롤이 숨겨집니다. 。