둘째, 두 개의 인터페이스?
1. 데이터 입력 인터페이스: 포그라운드 기능은 이 인터페이스를 사용하여' 입력, 저장, 질의, 삭제, 수정' 을 수행합니다.
데이터 저장 인터페이스: 백그라운드에서 데이터 저장; 입력 인터페이스:
셋째, 구현 방법은 1 입니다. 저장 함수 Sub Save ()'?
데이터 마커 저장, 원숭이 제작, 시간 20 13-9-5'?
Dimr 1, R2, R3 은 스트립 테이블 범위 ("데이터 저장소") 로 사용됩니까?
R2 = 를 설정합니다. 범위 ("a2", [a 100000]. 끝 (xlup)) 종료?
벨트 테이블 ("데이터 입력")? R 1 = 을 설정합니다. Range("c4:e4, d6:l39 ")?
If isempty (. Range ("C4 ") 또는 isempty (. Range ("E4")) then' 또는 isempty (. Range ("B7: B4 1 ")) 새 부서가 비어 있지 않습니다. 실패한 MsgBox ("인코딩과 이름이 null 이므로 저장할 수 없습니다!" " )? 그렇지 않으면요?
R3 = R2 를 설정합니다. 찾기 (. CELLS (4,3),,,, 1) R3 이 아니면 아무것도 아닌 건가요?
MsgBox ("이 코드는 이미 있으므로 저장할 수 없습니다. 이 정보를 수정하려면 "수정 전 조회" 를 클릭하십시오.)
그렇지 않으면요?
워크시트 (데이터 저장소). 줄 ("2: 35"). InsertShift: = xldown?
。 범위 ("c6:l39") 입니다. 복사? 데이터 입력 테이블 정보를 복사하시겠습니까?
워크시트 (데이터 저장소). 범위 (C2: L2). Paste special paste: = xlpastevalues? 。 범위 ("C4") 입니다. 복사? 데이터 입력 코드 복사?
워크시트 (데이터 저장소). 범위 ("A2: A35") 입니다. Paste special paste: = xlpastevalues? 。 범위 ("E4") 입니다. 복사? 복제된 데이터 항목의 이름?
워크시트 (데이터 저장소). 범위 ("B2: B35") 입니다. Paste special paste: = xlpastevalues? R 1 입니다. ClearContents? 데이터를 저장한 후 입력 인터페이스를 비우시겠습니까?
。 범위 ("C4") 입니다. 종료를 선택한 경우? End If End With End Sub
2. 쿼리 함수 Sub Query ()'?
쿼리 필터 매크로, 원숭이 생산, 시간 20 13-9-5''?
Dimerow 는 정수 dim r 1, R2 는 워크시트가 있는 범위 (데이터 입력) 로 사용됩니까? R 1 = 을 설정합니다. Range("d6:l39 ")? R2 = 를 설정합니다. Range("a6:b39 ")?
Erow = Sheets ("데이터 저장소") 입니다. [a 100000]. 끝내기 (xlUp). 줄
R 1 입니다. 내용을 지우다
의 각 ce 에 대해 다음을 수행합니다. [a2:x2]?
Ce<& gt ""그럼 ce. 값 = "*" & ampce & amp "*"? 와일드카드 추가 * 퍼지 쿼리를 구현합니다.
다음?
If IsEmpty (. Range("c4 ") 또는 IsEmpty (. Range("e4 ")) 그런 다음
또는 IsEmpty (. Range("b7:b4 1 ")) 부서 추가가 비어 있지 않아 실패했습니다.
MsgBox ("인코딩과 이름이 null 이므로 쿼리할 수 없습니다!" " )? 그렇지 않으면요?
워크시트 (데이터 저장소). Range ("a1:l"&; Erow) 를 참조하십시오. 고급 필터 작업: =xlFilterCopy, CriteriaRange:= _. [c3:e4], CopyToRange:=. [A5:l5], 유일한: = 거짓?
R2. 테두리 (xlDiagonalDown). LineStyle = xlNone R2 입니다. 테두리 (xlDiagonalUp). LineStyle = xlNone
R2. 테두리 (xlEdgeLeft). LineStyle = xlNone
R2. 테두리 (xlEdgeTop). LineStyle = xlNone
R2. 테두리 (xlEdgeBottom). LineStyle = xlNone
R2. 테두리 (xlEdgeRight). LineStyle = xlNone R2 입니다. 경계 상자 (xlInsideVertical). LineStyle = xlNone
R2. 경계 상자 (xlInsideHorizontal). LineStyle = xlNone
R2. Numberformatlocial = ";; 을 눌러 섹션을 인쇄할 수도 있습니다 ; "
의 각 ce 에 대해 다음을 수행합니다. [a2:x2]?
Ce<& gt ""그럼 ce. Value = Mid(ce, 2, Len(ce)-2)? 취소' *' 와일드카드?
다음? End If End With End Sub
3.Update Sub Update ()'?
업데이트 매크로, 원숭이 생산, 시간 20 13-9-5?
Dim arr, D 를 목적어로 쓰나요?
Dim r As 범위?
Dim lr&, 나&, j%?
Sheets ("data entry ")' 쿼리를 사용하여 워크시트 데이터 영역을 수정하고 배열 arr 에 쓰시겠습니까?
Arr =. 범위 ("A7 :D" & amp;; 。 범위 ("A65536"). 끝내기 (xlUp). 행)?
Arr =. Range("a6:l39 ")?
R = 을 설정합니다. Range("d6:l39 ")?
로 끝납니다.
Set d = createobject ("스크립트. Dictionary ")' 는 사전 객체를 정의합니까?
For I = 1 행별로 바인딩 (arr)' 하시겠습니까?
If Len(arr(i, 2) 2))& lt;; 그리고>0 그리고' 총' 줄, 즉 이름 서비스 데이터?
D.exists 가 없는 경우 (arr (I,1) & Arr(i, 2) 와 amparr(i, 3) 그리고 d(arr(i,1) & Arr(i, 2) 및 amparr(i, 3) = arr (I, 4) & Chr(9) 및 amparr(i, 5) _?
& ampChr(9) 및 amparr(i, 6) 및 ampChr(9) 및 amparr(i, 7) 및 ampChr(9) 및 amparr(i, 8) Chr(9) 및 amparr(i, 12)
마지막 문장: 인코딩 및 이름 연결 문자열의 사전이 없는 경우 (첫 번째 표시, 여기서 판단이 중복될 수 있음) 해당 문자열을 사전 키 값에 추가하고 후속 관련 속성 필드는 탭 연결을 통해 사전 항목에 추가됩니다.
끝내면? 다음?
-응? 벨트 테이블 ("데이터 저장소")?
-응? Lr =. 범위 ("a 100000"). 끝내기 (xlup). 로우' 데이터 저장소 워크시트 데이터 행?
。 범위 ("C2 :D”& amp;; LR) 을 참조하십시오. 특수 셀 (xlcelltypeconstants, 23). 컨텐츠 지우기는 공식 셀이 없는 c 및 d 열의 값을 지우시겠습니까?
Arr =. Range ("a2: l" & Lr)' 데이터 저장소 워크시트 데이터 영역 쓰기 배열 arr?
For I = 1 행별로 바인딩 (arr)' 하시겠습니까?
D. 가 있는 경우 (arr(i,1) & Arr(i, 2) 및 ampArr (I, 3)) 인코딩 및 이름 연결 문자열의 사전이 있는 경우 시트 2 에 존재합니다.
J = 4 부터 12 'D 까지 e, f ... 한 열씩?
세포가 아니라면 (I, j). HasFormula Then Cells(i, j) = Split(d(arr(i,1) amp; Arr(i, 2), Chr(9))(j-3)
셀에 공식이 포함되어 있지 않으면 시트 2 에 해당하는 데이터가 셀에 기록됩니다.
。 세포 (나? +? 1,? J)? =? 분할 (d (arr (I, 1)? & amp? 아르 (나,? 2)? & amp? 아르 (나,? 3),? Chr(9))(j? -응? 4)?
다음?
끝? 만약?
다음?
끝? 무엇을 사용합니까?
R.ClearContents?
시트 ("
데이터 입력
세포 (4,? 3). 선택?
MsgBox? ("
데이터가 업데이트되었습니다. 업데이트 내용을 보려면 버튼을 클릭하여 확인하십시오.) 를 참조하십시오.