bsreekanth
사전 객체 :-) API에 익숙하지 않다 1996 년에 VB Script 2의 일부로 다시 돌아가서 나중에 VB Scripting 런타임 라이브러리 (scrrun.dll)에 추가되었습니다. Dictionary 개체를 사용하려면 Microsoft Scripting Runtime에 대한 참조를 추가해야합니다.
사전에 항목을 추가하는 구문은 열쇠는 당신이 오류가 발생합니다 다른 고유해야합니다
DictObject.Add **<Unique key>**,Value
입니다. 어떻게 작동하는지 이해하기 위해 다양한 시나리오를 설명합시다.
의 우리는 (셀 텍스트가 아닌) 행을 저장하는 예를
을하자 당신은 내가 만들 변수 "J"를 사용하고 있습니다 것으로 나타났습니다 경우, 행 번호를
Sub Sample()
Dim spRange As Range
Dim Dict As Dictionary
Dim j as long
Set spRange = Range("A1:A10")
Set Dict = New Dictionary
j = 1
For Each cell In spRange
Dict.Add j, cell.Row
j = j + 1
Next cell
Dim x As Variant
For Each x In Dict
Debug.Print Dict(x)
Next
End Sub
를 검색 고유 키를 저장 한 다음 행 값을 저장합니다.
저장된 행 값을 검색하려면 사전 객체를 반복합니다.
지금 다시 질문하기. 나중에
, 나는 행을 검색하고, 첫 번째 요소의 값에 액세스해야합니다.
이 내가 가지 혼란 스러워요 부분입니다. 이유는, 범위의 특정 행의 값을 얻으려는 경우입니다. spRange 왜 사전 개체를 사용하고 있습니까?
당신은 아직도 당신이 아래의 코드를
Sub Sample()
Dim spRange As Range
Dim Dict As Dictionary
Set spRange = Range("A1:A3")
Set Dict = New Dictionary
j = 1
For Each cell In spRange
Dict.Add j, cell.Row
j = j + 1
Next cell
Dim x As Variant
For Each x In Dict
Debug.Print spRange.Cells(Dict(x), 1).Value
Next
End Sub
그리고 당신의 의도가있는 경우를 사용할 수있는 사전 객체를 사용하려는 경우 당신은 직접이 코드
Debug.print spRange.Cells(1, 1).Value
를 사용하여 값을 얻을 수 있습니다 범위 값을 사전에 저장하고 특정 키 (행 번호)을 기반으로 값을 검색 한 다음이 코드를 사용할 수 있습니다.
Sub Sample()
Dim spRange As Range
Dim Dict As Dictionary
Set spRange = Range("A1:A3")
Set Dict = New Dictionary
For Each cell In spRange
'~~> See how I reversed it?
Dict.Add cell.Row, cell.Text
Next cell
Dim x As Variant
For Each x In Dict
Debug.Print Dict(x)
Next
'OR
'Debug.Print Dict(2)
End Sub
마지막 한 점. 사전 개체를 통해 루프를 사용하여 값을 검색하지는 않지만 "Debug.Print Dict (2)"와 같은 것을 사용할 계획이라면 요소가 있는지 또는 요소가 있는지 먼저 확인하는 추가 코드를 사용하는 것이 좋습니다. 그리고 그것을 보여주지 않습니다. 예를
If Dict.Exists(2) Then Debug.Print Dict(2)
HTH를 들어
당신이 어떤 질문이 있으면 알려주세요.
시드
는'Row'은 행 번호입니다 : 당신이 전체 행을 저장하려면 단순히'DICT를 사용하여 사전에 저장된 값을 검색 할 경우'cell.EntireRow' –
를 사용합니다. Item (x)''x'는 행 번호입니다. 다른 열에 저장된 값을 검색하려면'Cells (x, y) .Value'를 사용하십시오. 여기서'x'는 행 번호이고'y'는 열 번호입니다. – Cutter