Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Typen unverträglich

Forumthread: Typen unverträglich

Typen unverträglich
14.10.2015 21:48:14
PQuest:-)
Hallo,
folgender Code macht Probleme:
Private Sub UserForm_Initialize()
Dim vntQuelle As Variant
Dim dictUnikate As Object
Dim lngLastRow As Long
Dim ws As Worksheet
'Erstellung von Dropdownlisten mit eindeutigen Einträgen
'neue Einträge tauchen automatisch in der Liste auf
Set ws = Worksheets("ListOfPatients")
lngLastRow = ws.Cells(Rows.Count, 1).End(xlUp).Row
vntQuelle = ws.Range(Cells(2, 1), Cells(lngLastRow, 1))
vntQuelle = WorksheetFunction.Transpose(vntQuelle)
Call QSort(vntQuelle, LBound(vntQuelle), UBound(vntQuelle))
Me.Controls("cbPatID").Object.List = vntQuelle
End Sub
Sub QSort(ByRef arr, low, hi)
Dim i, j, p
While low p = arr(hi)
i = low - 1
For j = low To hi - 1
If arr(j) i = i + 1
Swap arr, i, j
End If
Next
Swap arr, i + 1, j
QSort arr, low, i
low = i + 2
Wend
End Sub Sub Swap(ByRef arr, first, second)
Dim t
t = arr(first)
arr(first) = arr(second)
arr(second) = t
End Sub
Kurz zur Erklärung:
Der Code holt Daten aus Spalte 1 einer Tabelle, sortiert sie und füllt damit die Auswahlliste der Combobox in einem UF.
Leider steigt das Programm in der Zeile
Call QSort(vntQuelle, LBound(vntQuelle), UBound(vntQuelle))
mit "Fehlermeldung 13 Typen unverträglich" aus, wenn Spalte 1 leer ist oder nur einen Wert enthält.
Trage ich die ersten beiden Werte direkt in die Tabelle ein, macht das Userform was es soll.
Was mache ich falsch?
Gruß,
PQuest:-)

Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Typen unverträglich
14.10.2015 22:19:14
Daniel
Hi
der Befehl:
VariantVariable = Zellbereich.Value
erzeugt nur dann ein zweidimensionales Array, wenn der Zellbereich aus mindestens 2 Zellen besteht.
ist er jedoch nur eine Zelle gross, so wird die VariantVariable zur einfachen Wert-Variable vom Typ String, Double oder Boolean (je nachdem was in der Zelle steht)
die Funktionen Ubound und LBound funktionieren aber nur mit Arrays, daher der Fehlerabbruch
und selbst wenn, spätestens der Quicksort steigt aus, weil auch die Indexabfrage arr(i) eben nur mit Arrays, aber nicht mit Wertvariablen funktioniert.
der Workaround ist hier ganz einfach:
führe die Aktion nur aus, wenn lngLastRow grösser als 2 ist.
besteht der Bereich nur aus einer Zeile, ist sortiern sowieso sinnlos.
Gruss Daniel

Anzeige
AW: Typen unverträglich
14.10.2015 22:37:12
PQuest:-)
Besten Dank!

AW: Typen unverträglich
15.10.2015 08:47:25
Harry
Kann ich dir leider nicht sagen, aber folglich müsste doch etwas mit der ersten Zeile nicht stimmen. Die folgenden werden dann als Fehler überneommen, oder?
;

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige