Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
1452to1456
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

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:-)

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?

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige