HERBERS
Excel-Forum
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Entdecke rund 2 Millionen Excel-Lösungen im
Forumsarchiv

Beiträge zum Thread: VBA Typen unverträglich

Christian
03.08.2026 18:24:27
VBA Typen unverträglich
Onur
03.08.2026 18:43:49
AW: VBA Typen unverträglich
Christian
03.08.2026 18:57:16
AW: VBA Typen unverträglich
Onur
03.08.2026 18:58:43
gerne !
daniel
03.08.2026 19:06:36
AW: VBA Typen unverträglich
Christian
03.08.2026 19:20:53
AW: VBA Typen unverträglich
daniel
03.08.2026 19:38:20
AW: VBA Typen unverträglich
Forumbeitrag
Excel-Version des Fragestellers:
365 privat
Erfahrungslevel des Fragestellers:
Basiskenntnisse in VBA
Christian
03.08.2026 18:24:27
VBA Typen unverträglich
Hallo, wahrscheinlich bin ich einfach nur blind, aber ich finde den Fehler einfach nicht,

warum bekomme ich in der Zeile If IsDate(Eingabearray(i, 1)) Then die Meldung Typen unverträglich bei Eingabe eines Datums in J1?

Danke
Christian

https://www.herber.de/bbs/user/180949.xlsm
Forumbeitrag
Excel-Version des Fragestellers:
365 privat
Erfahrungslevel des Fragestellers:
Basiskenntnisse in VBA
Christian
03.08.2026 18:26:18
Nachtrag, der Fehler kommt auch, wenn in I1 was steht owT
Forumbeitrag
Excel-Version des Fragestellers:
365 privat
Erfahrungslevel des Fragestellers:
Basiskenntnisse in VBA
Onur
03.08.2026 18:43:49
AW: VBA Typen unverträglich
Wenn in I nur eine Zelle belegt ist - und zwar die erste - dann ist, dank
    GesamtZeilen = ws.Cells(ws.Rows.Count, "I").End(xlUp).Row

GesamtZeilen = 1 und dadurch ist dank
Eingabearray = ws.Range("I1:I" & GesamtZeilen).Value

Eingabearray kein ARRAY, da sie nur aus einer Zelle (I1) besteht .
Forumbeitrag
Excel-Version des Fragestellers:
365 privat
Erfahrungslevel des Fragestellers:
Basiskenntnisse in VBA
Christian
03.08.2026 18:57:16
AW: VBA Typen unverträglich
Guten Abend Onur,

danke für den Hinweis,

habe es dann mit

Eingabearray = ws.Range("J1:J" & GesamtZeilen).Value2

If GesamtZeilen = 1 Then
ReDim Preserve Eingabearray(1 To 1, 1 To 1)
End If


gelöst.

Gruß
Christian
Forumbeitrag
Excel-Version des Fragestellers:
365 privat
Erfahrungslevel des Fragestellers:
Basiskenntnisse in VBA
Onur
03.08.2026 18:58:43
gerne !
Forumbeitrag
Excel-Version des Fragestellers:
365 privat
Erfahrungslevel des Fragestellers:
Basiskenntnisse in VBA
daniel
03.08.2026 19:06:36
AW: VBA Typen unverträglich
Hi

wenn du eine Zuweisung machst wie:
x = Range(...).Value

wird x nur dann ein Array, wenn der verwendete Zellbereich mindestens 2 Zellen umfasst.
ist der Zellbereich nur genau eine Zelle groß, dann wird x kein Array, sondern ein Einzelwert.
Einzelwerte musst du aber anders programmieren als Arrays.

du könntest jetzt nach der Zuweisung abfragen, was du bekommen hast und dann zwei unterschiedliche Programmierungen erstellen:
 Eingabearray = ws.Range("I1:I" & GesamtZeilen).Value

If Vartype(EingabeArray) < vbArray then
... hier die Programmierung für Einzelwert
else
... hier die Programmierung für Array
end if


das ist aber in der Regel doppelter Aufwand, da die Arbeit ja im Prinzip in beiden Fällen die gleiche ist.
daher bevorzuge ich es, auch den Einzelwert in ein zweidimensionales Array zu stecken, damit alles einheitlich programmiert werden kann.
hierzu gibt es zwei Wege:

a) man fragt erstmal ab, wie groß der Zellbereich überhaupt ist und gestaltet dann die Zuweisung unterschiedlich.
GesamtZeilen = ws.Cells(ws.Rows.Count, "I").End(xlUp).Row

if GesamtZeilen = 1 then
Redim Eingabearray(1 to 1, 1 to 1)
Eingabearray(1, 1) = ws.Range("I1").value
else
Eingabearray = ws.Range("I1:I" & GesamtZeilen).Value
end if

damit bekommst du dann ein zweidimensionales Array mit nur einem Wert, dh der Rest deiner Programmierung sollte dann funktionieren, egal ob eine oder mehr Zellen.

b) man weist der Variablen nicht nur eine Spalte, sondern zwei Spalten zu. Damit hat man immer zwei Zellen (auch wenn es nur eine Zeile ist), und bekommt auch immer das Array.
Wenn die zweite Spalte stört oder Probleme in der weiteren Programmierung macht, kann man sie mit Redim Preserve wieder entfernen.
Eingabearray = ws.Range("I1:J" & GesamtZeilen).Value

Redim Preserve EingabeArray(1 to Ubound(Eingabearry, 1), 1 to 1)


Gruß Daniel

Forumbeitrag
Excel-Version des Fragestellers:
365 privat
Erfahrungslevel des Fragestellers:
Basiskenntnisse in VBA
Christian
03.08.2026 19:20:53
AW: VBA Typen unverträglich
Hallo Daniel,

danke für die ausführliche Erklärung.
Im Prinzip ist meine Lösung doch nur die Kombination aus deinen beiden Vorschlägen oder?
Aber wie gesagt, ausführliche Erklärungen und Alternativen sind immer hilfreich.

DAnke und noch einen schönen Abend
Christian
Forumbeitrag
Excel-Version des Fragestellers:
365 privat
Erfahrungslevel des Fragestellers:
Basiskenntnisse in VBA
daniel
03.08.2026 19:38:20
AW: VBA Typen unverträglich
Hi
deine Lösung funktioniert bei mir nicht, weil ich das Redim Preserve nicht auf einen Einzelwert anwenden kann sondern nur dann, wenn die Variable schon ein Array ist.
ich bekomme damit in der gleichen Situation auch den Fehler.
Gruß Daniel