Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
680to684
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
680to684
680to684
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Werte eines Arrays auf ein Mal in Range schreiben?

Werte eines Arrays auf ein Mal in Range schreiben?
17.10.2005 14:26:30
Jens
Hallo liebe Leute!
Mir schien, da gab's eine Möglichkeit...
Ich möchte die Werte eines Arrays auf einen Schlag an einen Range zuweisen. Etwa so:

Sub Test()
Dim intTest(1 to 3) As Integer
intTest(1) = 4
intTest(2) = 6
intTest(3) = 9
Range("A1:A3").Value = intTest()
End Sub

Geht aber so nicht, weil am Ende steht in allen Zellen nur die 4 drin.
Die Variante, jeden Wert einzeln zuzuweisen, möchte ich aus Zeiteffizienz-Gründen nicht gehen. Wenn's aber sonst eine sehr schnelle Möglichkeit gibt, dies zu machen, bin ich offen!
Vielen Dank für eure Antworten sagt wie immer
der Jens

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

Betreff
Datum
Anwender
Anzeige
AW: Werte eines Arrays auf ein Mal in Range schreiben?
17.10.2005 14:33:59
Uduuh
Hallo,
das Array muss 2-Dimensional sein (Zeile,Spalte).

Sub Test()
Dim intTest(1 To 3, 1 To 1) As Integer
intTest(1, 1) = 4
intTest(2, 1) = 6
intTest(3, 1) = 9
Range("A1:A3").Value = intTest()
End Sub

Gruß aus’m Pott
Udo

AW: Werte eines Arrays auf ein Mal in Range schrei
17.10.2005 14:36:08
Jens
Hallo Udo!
Danke, funktioniert! Hat mir sehr geholfen, also vielen Dank!
Jens
AW: Werte eines Arrays auf ein Mal in Range schreiben?
17.10.2005 14:35:09
MichaV
Hallo,
gehst doch, Du musst das Array vorher nur drehen:
Range("A1:A3").Value = WorksheetFunction.Transpose(intTest())
Gruss- Micha
PS: Rückmeldung wäre nett.
Anzeige
AW: Werte eines Arrays auf ein Mal in Range schrei
17.10.2005 15:07:43
Jens
Hallo Uduuh und MichaV!
Hab beide Versionen probiert, beide Funktionieren.
Allerdings ist die zweite Version (eindimensionales Array mit transponieren) um einiges schneller, v.a. bei größeren Datenmengen. Außerdem etwas einfacher zu implementieren.
Also vielen lieben Dank an euch beide, habt mir auf jeden Fall geholfen!
sagt der Jens
AW: Werte eines Arrays auf ein Mal in Range schrei
18.10.2005 07:41:19
Heiko
Moin Jens,
wenn du Transpose einsetzen willst, gerade bei großen Datensätzen, dann Vorsicht da gibt es Grenzen.
aus dem Online-Excel Forum von MichaV.
Auf der alten XLimits- Seite bin ich nun auf einen weiteren Hinweis gestolpert, der meine Vermutung bestätigt hat: Es gibt in Excel97 und 2000 (die kann ich testen) in einigen Fällen eine Einschränkung beim Arbeiten mit Arrays. XLimits sagt dazu:
Limitationen der Transpose-Methode
If you decide to use Excel's Transpose method instead of the TransposeDim() function to transpose the array, you should be aware of the following limitations with the Transpose method:
The array cannot contain an element that is greater than 255 characters.
The array cannot contain Null values.
The number of elements in the array cannot exceed 5461.
http://web.archive.org/web/20040706194455/http://195.186.84.74/xlimits/arrays.htm
( Ob der Link noch geht habe ich nicht getestet. !!! )
Gruß Heiko

PS: Rückmeldung wäre nett !
Anzeige
AW: Werte eines Arrays auf ein Mal in Range schrei
18.10.2005 09:28:15
Jens
Hallo Heiko!
Danke für den Hinweis mit dem Transpose.
Inzwischen mache ich es so, dass ich einem größeren Zellbereich ein mehrdimensionales Array zuweise, also n Zeilen und m Spalten. So in der Art
redim intTest(1 to n, 1 to m)
...
Range(cells(1,1),cells(n,m)).value = intTest
Funktioniert bisher problemlos.
Danke trotzdem für deinen Hinweis.
LG,
Jens
AW: Werte eines Arrays auf ein Mal in Range schrei
18.10.2005 09:32:45
MichaV
Hallo,
danke Heiko, da hab ich nicht mehr dran gedacht.
Für alle, die es nicht glauben: (XL2000)


Option Explicit
Sub Test()
Dim a
Dim b
Dim i%
ReDim a(5460)
For i = 1 To UBound(a)
  a(i) = Rnd
Next
On Error Resume Next
b = WorksheetFunction.Transpose(a)
If Err.Number = 0 Then Debug.Print "Transponieren bei 5460 Elementen erfolgreich"
On Error GoTo 0
ReDim a(5461)
For i = 1 To UBound(a)
  a(i) = Rnd
Next
On Error Resume Next
b = WorksheetFunction.Transpose(a)
If Err.Number <> 0 Then Debug.Print "Transponieren bei 5461 Elementen nicht erfolgreich"
On Error GoTo 0
ReDim a(2)
For i = 1 To 2
  a(i) = Space(255)
Next i
On Error Resume Next
b = WorksheetFunction.Transpose(a)
If Err.Number = 0 Then Debug.Print "Transponieren bei Elementen mit Länge 255 erfolgreich"
On Error GoTo 0
ReDim a(2)
For i = 1 To 2
  a(i) = Space(256)
Next i
On Error Resume Next
b = WorksheetFunction.Transpose(a)
If Err.Number <> 0 Then Debug.Print "Transponieren bei Elementen mit Länge 256 nicht erfolgreich"
End Sub



Gruss- Micha.
Anzeige

135 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige