VBA Programm Arrays? und einer Variablen mehrere Werte zuweisen?

4 Antworten

Ein Array ist ein Objekt (eine Variable) mit mehreren Werten. Du kannst auf jeden Wert über einen Index zugreifen, sowohl lesend als auch schreibend.

Einfaches Code-Beispiel:

Dim Namensliste() As String, Name As String, AndererName As String

ReDim Namensliste(20)

'Hier sollte noch Code stehen, der die Namensliste irgendwie füllt

Name = Namensliste(5)

Namensliste(8) = AndererName

Dim NochEineNamensliste() As String

NochEineNamensliste = Namensliste 'direkte Zuweisung eines Arrays an ein Array

Ich weiß nicht, was du mit deinem Punkt-Beispiel vorhast. Man kann zwar ein dreidimensionales Array von Punkten erzeugen

Dim Punkt(9, 15, 4) As Integer

wo dann jedem Punkt aus einem Quader aus diskreten Punkten ein ganzzahliger Wert zugeordnet wird, aber das braucht man eher selten.

Wenn du, wie ich vermute, ein Problem aus der Geometrie hast, brauchst du Punkte, deren Koordinaten auch nicht-ganzzahlige Werte annehmen können. Dazu könntest du nehmen:

Dim X_Wert(AnzahlPunkte - 1) As Double, Y_Wert(AnzahlPunkte - 1) As Double, Z_Wert(AnzahlPunkte - 1) As Double

aber übersichtlicher dürfte ein eigener Typ sein

Type Punkt3D

X As Double

Y As Double

Z As Double

End Type

Dim Punkte(AnzahlPunkte - 1) As Punkt3D

Woher ich das weiß:Berufserfahrung – Software-Entwickler

RoSiebzig  16.04.2015, 14:48

marinus94 will offenbar Punkte im Raum verarbeiten, da würde ich Dein Punkt3D Beispiel vertiefen. Vielleicht willst Du, marinus94  ja 3d-Figuren kreieren oder 3d-Geometrie betreiben? Da könnte man vielleicht einen 3d-Boolean Punkt3d(X,Y,Z) jeweils true zuweisen im Sinne von "ist (Eck)Punkt der 3d-Figur" zB, um diese Punkte später per algo durch Linien zu verbinden, so daß man Flächen hat, die die Figur 'manteln'. Bzw dito, um einen gewünschten geometrischen Körper zu 'manteln' oder zu 'gittern'.

0
PWolff  16.04.2015, 14:52
@RoSiebzig

Da würde ich auch gern wissen, was @marinus94 beabsichtigt.

1
RoSiebzig  16.04.2015, 15:40
@RoSiebzig

Ich mach' sowas immer mit array[ ][ ][ ]

alle int Punkte[k][m][n]=0;

(meinePunkte:)   Punkt[x][y][z]=1;

und geh sie dann per Schleife  for-for-for-if  durch, um sie abzufragen oder auszugeben.

0
PWolff  16.04.2015, 15:41
@RoSiebzig

Ja, das geht in VBA:

Dim Punkt(X_Max - 1, Y_Max - 1, Z_Max - 1) As Boolean
1

Erste Frage: mehrere Variable mit unterschiedlichen Namen.

Zweite Frage: Man kann Array's ein-, zwei- und dreidimensional kreieren.

Eindimensional: PunktA(1), PunktA(2), PunktA(3)

Zweidimensional: PunktA(1,1), PunktA(1,2), ... PunktA(2,1), PunktA(2,2)

Dreidimensional: PunktA(1,1,1), PunktA(1,1,2) ... PunktA(1,2,1), PunktA(1,2,2) ... PunktA(2,1,1), PunktA(2,1,2)

Für Dich wird wohl 3-dimensional passend sein: PunktA(X-wert,Y-Wert,Z-Wert)

Reicht das als Info ?

(hat sich mit PWolff) überschnitten)

Gruß aus Berlin


Ein array ist ein Objekt mit n Elementen, die Du ansprichst mit ihrer lfd.Nr. in der Klammer (die nichts mit dem Datentyp des array-Objektes string, int usw zu tun hat). Benutzt wird der (nach dem Gleichheitszeichen in einer Anweisung) zugewiesene Wert.

Der array kann vom datentyp string, int, double, (oder boolean?) sein.

Je nach Dimensionen kann er eine Liste von Namen oder Bezeichnungen sein als String Liste(7) = "Herr Borg"; oder eine Koordinatensammlung oder Koordinatenebene 'meinen' boolean Koord(201)(11)=true; oder int Koord(201)(11)=1; - jeweils einen Punkt angelegt). Oder Objekte mit mehreren Eigenschaften definieren und identifizieren Fahrzeug(7)(1)(83)= "Auto"; Fahrzeug(7)(1)(84)="Moped"; ..

Du willst aber Punkte im Raum verarbeiten, da würde ich das Punkt3D Beispiel von PWolff vertiefen (den thread dort fortführen). Vielleicht willst Du ja 3d-Figuren kreieren oder 3d-Geometrie betreiben? Da .. (s.dort)