programing

Excel VBA 시계 창에서 사전의 값을 모니터링하는 방법은 무엇입니까?

mailnote 2023. 6. 15. 22:01
반응형

Excel VBA 시계 창에서 사전의 값을 모니터링하는 방법은 무엇입니까?

저는 엑셀 VBA 사전을 사용하고 있습니다.dict As New Dictionary스크립트 런타임에 참조를 추가합니다.디버깅하는 동안 이러한 키를 모니터링하려고 하면 사전에 있는 키만 볼 수 있고 각 키의 각 값은 볼 수 없습니다.

가치도 볼 수 있는 방법이 있습니까?그러면 디버깅이 훨씬 쉬워질 것입니다.

편집: 당신의 답변을 바탕으로, 쉬운 해결책은 없지만, 저는 다음과 같이 할 수 있습니다.

전역 변수 사용Dim d_obj As Object그리고 그것을 지속적으로 모니터링하고 사전의 값을 찾아야 할 때마다, 나는 즉시 창에 입력합니다.Set d_obj(key) = ...모니터 창에서 값을 볼 수 있습니다.

추가적으로 제가 할 수 있는 것은 사전을 가져와서 값을 목록으로 반환하는 함수를 작성하고 직접 창에서 이 함수를 유사하게 사용하는 것입니다.모두에게!

저는 주로 타자를 칩니다.dict.items바로 옆 창에서 선택하고 Shift+F9로 이동하여 시계 창에 삽입합니다.

또는 모든 항목을 나열할 수 있는 바로 옆 창에 한 줄로 표시합니다.

for each i in dic.Items: debug.Print i: next

저는 모든 단순 유형 변수와 중첩된 모든 사전의 내용을 시계 창에 표시하는 데 사용할 수 있는 재귀 함수를 사용합니다.이렇게 하면 다음과 같은 형태로 출력이 생성됩니다.

Fred:rabbit; Tiddles:cat; Fluffy:cat; Food:[1:lettuce; 2:biscuits; ]; 

여기서 키와 값은 ":"로 구분되고, 항목은 ";"로 구분되며, 중첩 사전은 대괄호로 표시됩니다.

Public Function DictionaryContents(ByVal dcDictionary, Optional ByVal boolShowKeyIndex As Boolean = False)

  Dim Keys
  Keys = dcDictionary.Keys

  Dim i As Long
  Dim stIndex As String

  Dim stOutput As String
  stOutput = vbNullString

  For i = 0 To dcDictionary.Count - 1

    If boolShowKeyIndex Then
      stIndex = "(" & i & ")"
    End If

    stOutput = stOutput & Keys(i) & stIndex & ":"

    If IsObject(dcDictionary(Keys(i))) Then
      stOutput = stOutput & "[" & DictionaryContents(dcDictionary(Keys(i)), boolShowKeyIndex) & "]"
    Else
      stOutput = stOutput & dcDictionary(Keys(i))
    End If

    stOutput = stOutput & "; "

  Next i

  DictionaryContents = stOutput

End Function

언급URL : https://stackoverflow.com/questions/9803708/how-to-monitor-the-values-in-a-dictionary-in-the-excel-vba-watch-window

반응형