Anzeige
Archiv - Navigation
392to396
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
392to396
392to396
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Array bilden

Array bilden
06.03.2004 10:33:29
Michael
Hallo am Samstag!
Ich muß ein sich immer wieder änderndes umfangreiches Array bilden. Die Struktur für das Array liegt in einer Tabelle bzw. Stringvariablen vor.
Wie kann ich das Array bilden?
Der Weg = Array(stringvariable) funktioniert nicht.
Weiß jemand Hilfe?

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Array bilden
06.03.2004 11:47:09
Alex K.
Hallo Michael,
die Anweisung "Array" verlange mehrere Argumente. Jedes Argument stellt einen Eintrag in dem zu bildenden Array dar.
Beispeil
Dim ar As Variant
ar = Array("Eintrag 1", "Eintrag 2", "Eintrag 3")
MsgBox ar(0) 'zeigt "Eintrag 1"
MsgBox ar(1) 'zeigt "Eintrag 2" etc.
Also musst du deine "stringvariable" in einzelne Strings aufteilen und als einzelne Argumente in "Array" übergeben.
Was bedeutet "Struktur für das Array liegt in einer Tabelle"? Beschreibe mal genau, welche Zelle welchen Inhalt hat und wie diese in ein Array aufgeteilt werden sollen.
Anzeige
AW: Array bilden
06.03.2004 12:26:09
Michael
In einer Excel-Tabelle habe ich die Struktur der Datentabelle in dieser Form:
(insgesamt über 200 Felder)
Start Bezeichnung Feldtyp FeldtypCode
1 rec_typ character 2
4 Rasse_s character 2
7 Rasse character 2
10 Land_o character 2
13 Sex_o character 2
14 Nummer_o character 2
26 Name_o character 2
Ich habe diese Informationen per Makro in eine Stringvariable eingelesen:
Struktur = "Array(1,2), Array(4,2), ....
Das ganze soll dann in dem Datenimport
Workbooks.OpenText Dateiname, origin:=xlWindows, startrow:=1, DataType:=xlFixedWidth, fieldinfo:=Array(struktur)
verwendet werden.
Ich muß also das Array für den Parameter fieldinfo etwa so aufgebaut haben:
array(array(1,2), array(4,2),....)
Ich bin leider noch nicht auf den Trichter gekommen, wie das gehen könnte!
Anzeige
AW: Array bilden
06.03.2004 13:29:25
Alex K.
Hallo Michal,
der Ansatz ist richtig, aber du denkst zu kompliziert :-)
Also für den Import mit "OpenText" musst du den Parameter "FieldInfo" einfach mit einem Array füllen:
Workbooks.OpenText Dateiname, origin:=xlWindows, startrow:=1, DataType:=xlFixedWidth, fieldinfo:=Array(Array(1,2), Array(4,2)....)
Beachte bitte, dass das erste Zeichen bei Zähler 0 beginnt, und nicht bei 1!!!
Wenn du die Arrays vorher einer String-Variable zuweist, dann wird auch die String-Variable übergeben. Der Parameter FieldInfo erwartet aber keine String-Variable, sondern ein Array.
AW: Array bilden
06.03.2004 13:39:10
Michael
Vielen Dank Alex,
aber wie kann ich den Vorgang automatisieren?
Ich erhalte unterschiedliche Dateien und die Struktur immer in vergleichbarer Weise.
Siehst Du eine Möglichkeit, die gelieferten Feldinformationen in das benötigte Array umzusetzen ohne dass viel Handarbeit notwendig ist?
Gruß
Michael
Anzeige
AW: Array bilden
06.03.2004 14:14:10
Alex K.
Hallo Michael,
hier mal ein Stück Code für das Füllen eines Arrays auf Grund der vorgegeben Infos. Hierbei wird davon ausgegangen, dass ab Zelle A2 in Spalte "A" die Anfangsposition der zu importierenden Spalteninfo's steht und in Spalte "D" der zu importierende Datentyp. Also so, wie du es in deinem Beispiel angegeben hast.

Public Sub ImportText()
Dim arField As Variant
Dim row     As Long
Dim lRow    As Long
Dim i       As Integer
With ActiveSheet
lRow = .Cells(.Rows.Count, 1).End(xlUp).row
If lRow < 2 Then
MsgBox "Keine Struktur-Informationen angegeben"
Exit Sub
End If
ReDim arField(0 To lRow - 2, 0 To 1)
i = 0
For row = 2 To lRow
arField(row - 2, 0) = CInt(.Cells(row, 1).Value - 1)
arField(row - 2, 1) = CInt(.Cells(row, 4).Value)
Next row
End With
Workbooks.OpenText "c:\eigene dateien\test.txt", origin:=xlWindows, _
startrow:=1, DataType:=xlFixedWidth, fieldinfo:=arField
End Sub

Anzeige
AW: Array bilden
06.03.2004 14:58:39
Michael
Hallo Alex,
ganz herzlichen Dank für die Mühe!
Das ist die Lösung!
Ein schönes Wochenende!
Herzlichen Gruß
Michael

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige