@goran.nilssonRSJCU
This is probably better. This code searches for both parts and assemblies with the specified part number.
Then it returns a list of all the subassemblies (or top assembly) that contains the an occurrence with that part number.
It also counts how many of it exists in each subassembly 
Dim oAsm As AssemblyDocument = ThisDoc.Document
Dim Pnr As String = InputBox("Enter partnumber: ", "Search for partnumber", "000000")
Dim oList As New Dictionary(Of String, Integer)
Dim Msg As String = "Component count in Assembly/Subassemblies: " & vbCrLf
Dim pNrExists As Boolean = False
For Each oDoc As Document In oAsm.AllReferencedDocuments
If oDoc.DocumentType = DocumentTypeEnum.kPartDocumentObject Or _
oDoc.DocumentType = DocumentTypeEnum.kAssemblyDocumentObject
If oDoc.PropertySets.Item("Design Tracking Properties") _
.Item("Part Number").Value = Pnr
For Each oOcc As ComponentOccurrence In oAsm.ComponentDefinition.Occurrences.AllReferencedOccurrences(oDoc)
pNrExists = True
Try
If oList.ContainsKey(oOcc.ParentOccurrence.Name)
oList.Item(oOcc.ParentOccurrence.Name) += 1
Else
oList.Add(oOcc.ParentOccurrence.Name, 1)
End If
Catch
If oList.ContainsKey("Top level assembly")
oList.Item("Top level assembly") += 1
Else
oList.Add("Top level assembly", 1)
End If
End Try
Next
End If
End If
Next
For Each oKey As String In oList.Keys
Msg = Msg & oKey & " - " & oList.Item(oKey) & " st" & vbCrLf
Next
If pNrExists
MessageBox.Show(Msg, "Found components", MessageBoxButtons.OK)
Else
MessageBox.Show("None!", "Found components", MessageBoxButtons.OK)
End If