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

VBA
15.09.2020 08:53:47
Kopsch
Hallo,
ich möchte in Excel VBA einen Vektor transponieren
Leider bekomme ich die Fehlermeldung: " keine Zuweisung zum Datenfeld möglich"
Dim a(5) As Double
Dim b(5) As Double
For i=0 To 5
a(i)=i
Next i
b=Application.Transpose(b)
Vielen Dank für die schnelle Hilfe

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA
15.09.2020 09:22:54
Yal
Hallo Kopsch,
Transpose ist keine VBA sondern eine Worksheet-Funktion. So wird es abgerufen:
b = Application.WorksheetFunction.Transpose(a)
Jedoch sind die eindimensionale Array in VBA "ungerichtet". Es muss mindestens zweidimensional sein, sodass der Transpose eine Wirkung hat.
Viel Erfolg
Yal
Falsch, ...
15.09.2020 19:42:20
Luc:?
…Yal:
1. Es gibt 2 AufrufMethoden für WorksheetFunctions, die sich in ihrem Ergebnis etwas unterscheiden können, aber sonst den gleichen Bedingungen folgen → Application.~ und WorksheetFunction.~, wobei letzteres mit Application.WorksheetFunction.~ identisch ist.
2. 1dimensionale Arrays sind in VBA nicht ungerichtet, sondern sind 1stufigen Tensoren(0,1)* gleich, die Kovektoren entsprechen. Ein 1maliges .Transpose erzeugt daraus folglich ein 2dimensionales VBA-Array, das einem Vektor entspricht.
3. Der Fehler liegt woanders, was auch aus der F-Meldung ersichtlich ist: Man kann einem dimensionierten Datenfeld kein Array als Ganzes zuweisen, sondern nur seinen EinzelElementen oder die Werte des anderen Arrays eben einzeln, wobei es hier eben auch 2dimensional angelegt sein müsste, sonst wäre das wirkungslos. Daraus folgt, dass das Transponieren bei dieser Methode gar nicht erforderlich wäre.
Man kann aber b als Variant dimensionieren und dann klappt diese Zuweisung auch so wie ursprüngl vorgesehen.
* Vgl auch diesen Thread!
Gruß, Luc :-?
„Die universelle Befähigung zur Unfähigkeit macht jede menschliche Leistung zu einem unglaublichen Wunder.“ Stapps ironisches Paradoxon
Nichtsdestotrotz Durchblick verbessern mit …

Anzeige
AW: Falsch, ...
16.09.2020 06:50:55
Kopsch
Danke für die Antwort,
b als Variant zu definieren hat geklappt und funktioniert
siehe auch Antwort von Nepumuk
Bitte sehr, war aber an Yal gerichtet! owT
16.09.2020 20:10:14
Luc:?
:-?
Habe was gelernt, Vielen Dank. owT
18.09.2020 11:52:45
Yal
Also b als Variant definieren, weil 2Dimesionierung ohne Lange vorher zu festlegen nicht geht.
Da du owT im Betreff geschrieben hattest, ...
19.09.2020 16:57:02
Luc:?
…Yal,
hatte ich mit keinem weiteren Text gerechnet.
Wenn man eine Variable zB As Long deklariert, kann diese genau einen Wert und kein Array aufnehmen. Soll sie vom DatenTyp Long sein und ein Array aufnehmen, muss sie auch als Array dimensioniert wdn. Dann kann aber nur jedes Element genau einen Wert aufnehmen. Diese Einzelwerte müssen den Array-Elementen dann per Schleife übergeben wdn.
Ist der DatenTyp einer Variable aber Variant, kann sie alles aufnehmen, Einzelwerte, Arrays und sogar Objekte. Deshalb haben wir das hier vorgeschlagen.
Luc :-?
Anzeige
AW: VBA
15.09.2020 10:16:45
max.kaffl@gmx.de
Hallo Kopsch,
so:
Public Sub Test()
    Dim a(5) As Double
    Dim b As Variant
    Dim i As Long
    For i = 0 To 5
        a(i) = i
    Next i
    b = Application.Transpose(a)
End Sub

Gruß
Nepumuk
Anzeige
AW: VBA
15.09.2020 13:47:12
Kopsch
Vielen dank,
es funktioniert wie gewünscht
AW: VBA
15.09.2020 13:47:26
Kopsch
Vielen dank,
es funktioniert wie gewünscht

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige