2014-05-21 3 views
0

코딩에 익숙하지는 않지만 Excel에 익숙하지 않습니다.이 기능은 저에게 새로운 플랫폼이므로 문제가 무엇인지 이해하기가 어렵습니다.Excel 기능이 작동하지 않습니다.

내 자신의 함수를 작성하려고하는데 디버깅 할 때마다 "딩 (ding)"소리가 나고 오류 코드가 없으므로 "딩 (ding)"소리가 나지 않아서 내가 뭘 잘못하고 있는지 전혀 모른다. 여기에 함수가 있습니다.

Function userItems(Range) 
    Set userObj = CreateObject("Scripting.Dictionary") 
    For Each Cell In Range 
     If Not userObj.Exists(Cell.Value) Then 
      userObj.Add Cell.Value, Cell.Address 
      End If 
    Next Cell 
userItems = userObj(1) 
End Function 

추가 된 두 번째 인수

+0

무슨 일이 일어나고 있는지를 알기 위해'On Error Goto Here '를 쓰려고 했습니까? – Hybris95

+1

'userObj.Add Cell.Value'가 잘못되었습니다. 당신은 2 개의 매개 변수를 필요로하는 Dictionary로 작업하고 있으며 오직 하나만 전달합니다. [**이 ** **] (http://vba4all.wordpress.com/2013/09/10/vbe-your-new-home/) VBE Visual Basic Editor라는 IDE에서 IDE를 구성하는 방법에 대한 팁을 확인하십시오. - * 팁 : 도구 -> 옵션을 통해 소리를 비활성화 할 수 있습니다 * –

+0

그래서 열쇠를 추가해야합니까? 왜 저에게 오류가 발생하지 않았습니까? – grasshopper

답변

1

당신은 몇 가지 문제가 있습니다.

  1. 당신은 당신은
  2. 당신이 사전 결과로 수행 할 작업을해야합니다,하지만 여기에 모든 출력에 재미있는 트릭 아닌 사전 객체를 선언하는 것을 잊었다
  3. 기능에 대한 변수 이름을 선언해야 키/항목을 열로 입력

희망이 도움이 되셨습니다.

Sub test() 

Call testFunction(Range("A1:A100")) 

End Sub 

및 코드 :

'You need to declare the variable name and type 
Sub testFunction(myRange As Range) 

'First need to declare the object 
Dim dict As Object 
Set dict = CreateObject("Scripting.Dictionary") 
'Good practice to declare variables, otherwise they are Variants 
Dim cell As Range 

For Each cell In myRange 
    If Not dict.Exists(cell.Value) Then 
     dict.Add cell.Value, cell.Address 
    End If 
Next 

'Do something with the result, transpose is good fun 
Range("B1").Resize(dict.Count, 1).Value = WorksheetFunction.Transpose(dict.keys) 
Range("C1").Resize(dict.Count, 1).Value = WorksheetFunction.Transpose(dict.items) 

End Sub 

나는 사전 개체의 열렬한 팬입니다 만,이 코드는 맥용 오피스에서 실행되지 않습니다 유의하십시오.

관련 문제