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

Variant mit nur einem Wert als Array

Variant mit nur einem Wert als Array
07.07.2015 08:05:09
Florian
Hallo Zusammen,
ich habe ein Problem.
Ich befülle eine Variant Variable mit einer Spalte aus Excel, um diese dann in einer For-Schleife zu durchlaufen (Von 1 bis ubound(Variable)).
Klappt im normalfall auch, !! es sei denn, die Spalte enthält nur einen Wert und meine Variant Variable wird somit nicht zu einem Array. Dadurch gibt es wiederum eine Fehlermeldung bei dem aufruf "ubound", weil natürlich kein Array vorhanden ist, dass man zählen könnte.
Kann man auch einer Variant Variable mit der Zuweisung nur eines Feldes sagen: "Du bist ein Array!"?
Vielen Dank schon mal.

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Variant mit nur einem Wert als Array
07.07.2015 08:28:59
Sepp
Hallo Florian,
da gibt es viele Möglichkeiten.
Z. B.:
Sub nn()
  Dim vntV As Variant, vntI As Variant
  
  vntV = Range("A1")
  
  If Not IsArray(vntV) Then vntV = Array(vntV)
  
  For Each vntI In vntV
    Debug.Print vntI
  Next
  
End Sub


Gruß Sepp

Anzeige
AW: Variant mit nur einem Wert als Array
07.07.2015 09:42:23
Florian
Danke für die schnelle Antwort. Funktioniert prinzipiell.
Leider wird der Wert des entstandenen Arrays an die Position "0" geschrieben und ein "ubound" ergibt "0". Somit läuft meine For-Schleife noch immer nicht los. (For Counter = 1 to ubound(Array))
ABER das größere Problem ist, dass innerhalb der Schleife das Array mit "Array(Counter,1)" aufgerufen wird und mit deiner Variante nur ein eindimensionales Array entstanden ist. Ich bekomme also noch immer eine "Datenunverträglichkeit". :-(

AW: Variant mit nur einem Wert als Array
07.07.2015 10:09:06
Daniel
Hi
wenn du ein zweidimensionales Array brauchst dann im Prinzip so (ich gehe mal davon aus, dass du ein einen Zellbereich mit variabler Grösse in ein Array einlesen willst.
dim rng as range
dim arr as range
set rng = ? wie auch immer du du den Bereich bestimmst ?
if rng.cells.count = 1 then
redim arr(1 to 1, 1 to 1)
arr(1, 1) = rng.value
else
arr = rng.value
end if
ansonsten kannst du auch, wenn du eine Schleife über alle Elemente des Avos machen willst, nicht nur mit UBound den oberen Grenzwert bestimmen, sondern auch mit LBound den untern:

for i = LBound(arr) to Ubound(arr)
damit bist du dann unabhängig davon, zu welcher Basis das Array erstellt wurde.
Gruß Daniel

Anzeige
AW: Variant mit nur einem Wert als Array
07.07.2015 10:39:58
Sepp
Hallo Florian,
und warum nicht "For Each"? Ist außerdem schneller als "For 1 to..." und unabhängig von der Art des Arrays.
Gruß Sepp

AW: Variant mit nur einem Wert als Array
07.07.2015 11:02:56
Daniel
vielleicht weil die Schleife u.U. gar nicht über alle Elemente laufen soll, sondern nur über die erste Spalte?
vielleicht, weil die Arraywerte nicht nur gelesen, sondern auch geändert werden müssen?
vielleicht, weil für die Berechnung auf andere Werte des Arrays zurückgegriffen werden muss?
vielleicht, weil für die Berechnung die Zeilennummer es Elements benötigt wird?
Gruß Daniel

Anzeige
AW: Variant mit nur einem Wert als Array
07.07.2015 11:09:20
Sepp
Hallo Daniel,
Florian schrieb aber: "Ich befülle eine Variant Variable mit einer Spalte aus Excel"
und den Rest lass mal Ihn begründen!
Gruß Sepp

AW: Variant mit nur einem Wert als Array
07.07.2015 11:44:22
Florian
Danke Leute, streitet euch nicht ;-)
Läuft.

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige