Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1760to1764
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

VBA falscher Datentyp

VBA falscher Datentyp
01.06.2020 12:47:22
MarC
Hallo zusammen,
ich habe eine kleine Frage. Mit dem unten abgebildeten Code soll die ComboBox meines UserForms mit Werten gefüllt werden. Das funktioniert auch wunderbar. Jetzt ist mir aufgefallen das ich der Variablen arrDaten gar keinen Datentyp zugeordnet habe. Wenn ich as Long schreibe erhalte ich die Meldung "Typunverträglichkeit". Es funktioniert nur der Datentyp Variant. Wieso ist das so? Ich frage nur nach weil ich angst habe das ich mir später vielleicht mal üble Fehler einfange.
Private Sub UserForm_Activate()
Dim arrDaten
Dim lngLetzte As Long
With Worksheets("Data Base")
lngLetzte = .Cells(Rows.Count, 2).End(xlUp).Row
arrDaten = .Range(.Cells(7, 2), .Cells(lngLetzte, 2))
cb_Team.List = arrDaten
End With
End Sub

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA falscher Datentyp
01.06.2020 13:17:10
volti
Hallo Marc,
wenn Du den Datentyp weglässt, wird automatisch variant genommen. Und das passt hier ja, weil String-Daten aufgenommen werden sollen.
Ergänze einfach Dim arrDaten as variant
Long ist ja eine Ganzzahl und kann keine String-Daten sondern nur eine Zahl aufnehmen.
VG KH
AW: VBA falscher Datentyp
01.06.2020 13:22:06
MarC
Danke Volti,
mit String habe ich es auch versucht aber das wollte er nicht^^. Es wird nur Variant genommen. Kann es vll daran liegen das ich mehrere ComboBoxen befülle ohne diese mit End with zu schließen?
    With Worksheets("Data Base")
lngLetzte = .Cells(Rows.Count, 2).End(xlUp).Row
arrDaten = .Range(.Cells(7, 2), .Cells(lngLetzte, 2))
cb_Team.List = arrDaten
lngLetzte = .Cells(Rows.Count, 3).End(xlUp).Row
arrDaten = .Range(.Cells(7, 3), .Cells(lngLetzte, 3))
cb_Bereich.List = arrDaten
usw........ ca. 30 mal
End With

Anzeige
AW: VBA falscher Datentyp
01.06.2020 13:35:32
onur
Kann es sein, dass in den Zellen sowohl Text als auch andere Datentypen (Zahl, Datum o.Ä.) sind?
Das würde erklären, warum nur Variant geht. Denn nur bei einem Variant-Array kann/darf das erste Element Text, das Zweite Zahl und das Dritte Datum usw sein .
Danke Onur
01.06.2020 13:43:37
MarC
Ja es kommt alles drin vor Text, Zahlen, Datum. Danke Onur =)
Gerne !
01.06.2020 13:45:20
onur
Warum nimmst Du überhaupt Variablen?
01.06.2020 14:25:39
RPP63
Moin!
Variablen sollten variabel sein, sonst macht das doch keinen Sinn! ;)
Da sie nur einmal zugewiesen werden und sich nicht ändern, kann man sie doch gleich weglassen, oder?
With Worksheets("Data Base")
cb_Team.List = .Range(.Cells(7, 2), .Cells(.Cells(Rows.Count, 2).End(xlUp).Row, 2)).Value
End With

Das .Value am Ende dürfte wichtig sein.
Gruß Ralf
Anzeige
AW: Row?
01.06.2020 15:41:22
GerdL
Moin Ralf,
wenn wir schon dabei sind:
With Worksheets("Data Base")
cb_Team.List = .Range(.Cells(7, 2), .Cells(.Rows.Count, 2).End(xlUp)).Value
End With
Gruß Gerd
AW: Warum nimmst Du überhaupt Variablen?
01.06.2020 20:33:12
MarC
Hallo Ralf,
ich dachte dass ich für eine ComboBox eine brauche. Ist das falsch was ich gemacht habt oder einfach nur unnötiger mehraufwand?
AW: VBA falscher Datentyp
01.06.2020 17:01:43
EtoPHG
Hallo Marc,
Zur Frage: nur der Datentyp Variant. Wieso ist das so?
Weil die meisten anderen Datentypen wie String, Long, Double etc. nur genau einen Wert aufnehmen können, du aber 'der Variablen' einen Bereich zuordnest, der aus mehreren Elementen besteht. Da Variant zur Laufzeit den Datentyp bestimmt, wird daraus dann ein Array mit mehren Elementen.
Gruess Hansueli
Anzeige
Danke Hansueli
01.06.2020 20:35:30
MarC
Danke ich habe das irgendwann mal in der Schule gehört, aber das ist schon eine weile her =)

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige