Ich bin neu in VBA und Skripting im Allgemeinen. Ich war in der Lage, Ressourcen zu ziehen und eine benutzerdefinierte Funktion in Excel zu erstellen, die die eindeutige Anzahl eines Arrays zurückgibt. Die Funktion funktioniert ordnungsgemäß, wenn ich sie in einer Zelle in Excel anrufe.VBA: So rufen Sie eine benutzerdefinierte Funktion in einem Excel-Makro
Nun möchte ich diese Funktion in einem Makro verweisen, um mir ein Meldungsfeld mit den Zählungen für zwei verschiedene Spalten bereitzustellen. Wenn ich versuche, das Makro zu verwenden, erhalte ich einen 'Type Mismatch' Fehler.
Nicht sicher, was ich falsch mache - jede Hilfe würde sehr geschätzt werden.
Bearbeiten: Enthalten den COUNTDISTINCTcol-Code.
Sub GalileoCounts()
Dim teachers As Long
Dim students As Long
teachers = COUNTDISTINCTcol("W2:W") 'ERROR HERE for "W2:W"
students = COUNTDISTINCTcol("A2:A") 'ERROR with "A2:A" as well
MsgBox "Teachers: " & teachers & vbNewLine & "Students: " & students,
vbOKOnly, "Galileo Counts"
End Sub
----
Public Function COUNTDISTINCTcol(ByRef rngToCheck As Range) As Variant
Dim colDistinct As Collection
Dim varValues As Variant, varValue As Variant
Dim lngCount As Long, lngRow As Long, lngCol As Long
On Error GoTo ErrorHandler
varValues = rngToCheck.Value
'if rngToCheck is more than 1 cell then
'varValues will be a 2 dimensional array
If IsArray(varValues) Then
Set colDistinct = New Collection
For lngRow = LBound(varValues, 1) To UBound(varValues, 1)
For lngCol = LBound(varValues, 2) To UBound(varValues, 2)
varValue = varValues(lngRow, lngCol)
'ignore blank cells and throw error
'if cell contains an error value
If LenB(varValue) > 0 Then
'if the item already exists then an error will
'be thrown which we want to ignore
On Error Resume Next
colDistinct.Add vbNullString, CStr(varValue)
On Error GoTo ErrorHandler
End If
Next lngCol
Next lngRow
lngCount = colDistinct.Count
Else
If LenB(varValues) > 0 Then
lngCount = 1
End If
End If
COUNTDISTINCTcol = lngCount
Exit Function
ErrorHandler:
COUNTDISTINCTcol = CVErr(xlErrValue)
End Function
Was sind die Parameter für die UDF countdistinct? – yass
Können wir den Code für COUNTDISTINCTcol() sehen? –
Ohne den Code zu sehen, können wir Ihnen nicht helfen. Auch wenn es für "A2: A" oder irgendeinen anderen Bereich, aber nicht für "W2: W" funktioniert, müssen wir sowohl den Funktionscode als auch das Aussehen Ihrer Daten sehen. – Masoud