Einfache Wertzuweisung?

Bild

Betrifft: Einfache Wertzuweisung?
von: Frank
Geschrieben am: 05.11.2003 16:46:44

Hallo,

ich habe ein Tabellenblatt mit 6 Blöcken von wiederkehrenden Daten:

Menge1, Bezeichnung1, Anzahl1, Preis1,...
...
Menge6, Bezeichnung6, Anzahl6, Preis6,...

Der Einfachheit halber habe ich die Zellen, in denen die Daten stehen, mit gleichlautenden Namen versehen.

Jetzt möchte ich die Inhalte dieser Zellen in entsprechende Arrays einlesen:

Dim mengen(6) as Integer
mengen(1) = Range("Menge1").Value
...
mengen(6) = Range("Menge6").Value
[analog für Bezeichnung,...]

Anschließend muß ich die Werte aus diesen Variablen zu einem String konkatenieren. (also Wert aus Menge1,Wert aus Bezeichnung1,... hintereinander weg).

Das wird natürlich auf die Dauer etwas lästig, wenn man für jedes Array 6 Zeilen Zuweisung braucht. Im Moment hab ich grad einen Aussetzer: Es gibt doch da bestimmt eine schnellere Lösung, oder?

Danke im Voraus!

Bild


Betrifft: AW: Einfache Wertzuweisung?
von: Tino Schaltke
Geschrieben am: 05.11.2003 17:49:21

Hi,

versuch mal dies hier (ist aber nicht getestet)


Sub proggy()
dim x as integer, y as integer
dim mengen(6) as integer, bezeichnung(6) as string '(usw)
dim xstring(6) as string 'der komplette String
dim pre as variant
pre = array("Menge", "Bezeichnung", "Anzahl", "Preis", "...") 'Deine Felder OHNE Zahl
for x = 1 to ubound(pre-1) '... oder Anzahl Felder hier eintragen)
 for y = 1 to 6
  mengen(y) = range(pre(x-1) & y).value
  bezeichnung(y) = range(pre(x-1) & y).value
  '... hier dann noch Anzahl, Preis, usw. wie oben
 next y
next x
'...
for y = 1 to 6
xstring(y) = mengen(y) & bezeichnung(y) '& ... die weiteren Felder
next y
'...
End Sub


Ist mal ein kleiner Ansatz...
Gruß
Tino


Bild


Betrifft: AW: Einfache Wertzuweisung?
von: Frank
Geschrieben am: 06.11.2003 09:20:31

Hallo Tino,

erstmal danke für den Lösungsansatz. Wenn ich allerdings das Script so nehme wie von Dir aufgeschrieben, wird im ersten Durchlauf der Wert von "mengen(1)" den Variablen "partnumber(1)" und "bezeichnung(1)" zugewiesen, beim zweiten Durchlauf dann entsprechend denen mit Suffix 2 usw., was natürlich falsch ist...

Ich hab das ganze wie folgt abgeändert:

Option Base 1

Sub proggy()
Dim mengen(6) As Integer
Dim partnumber(6) As String
Dim bezeichnung(6) As String '
Dim pre As Variant
Dim y%
pre = Array("Menge", "Teilenummer", "Bezeichnung", " ... ")    'Die Felder OHNE Zahl
For y = 1 To 6
  mengen(y) = Range(pre(1) & y).Value
  partnumber(y) = Range(pre(2) & y).Value
  bezeichnung(y) = Range(pre(3) & y).Value
  ' die restlichen Felder analog         
Next y
  ' später das Zusammensetzen
End Sub


Vielleicht gibt es noch ne Möglichkeit, das ganze nochmals zu verkürzen, aber vom Prinzip her reicht das schon so aus. Vielen Dank!!

Frank


Bild

Beiträge aus den Excel-Beispielen zum Thema " Einfache Wertzuweisung?"