VBA Programm Arrays? und einer Variablen mehrere Werte zuweisen?
Hallo es geht um das programmieren von VBA in Excel Ich hätte 2 Fragen erstens:
Ich versteh das mit den Arrays nicht erstelle ich damit eine Variable mit mehreren Werten oder erstelle ich damit mehrere Variablen mit ähnlichem Namen?
und zweitens mein eigentliches Problem:
Gibt es eine möglichkeit einer Variable mehrere verschiedene Werte zuzuschreiben und diesa aber einzeln abzufragen bzw. zu ändern? (Es würde auch mit vielen einzelnen Variablen gehen aber das wird mir dann doch sehr unübersichtlich bei ca. 3-4 hundert^^) Bsp. PunktA(X-wert,Y-Wert,Z-Wert) wenn wer code beispiele hätte wäre es auch klasse ;)
LG Marinus
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
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.
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
Grundlage VBA Programmieren
http://www.vba-wordwelt.de/grundsaetzliches/wichtige-funktionen/array/
Entweder man deklariert die Variable als Variant und weist ihr ein Array zu oder man deklariert sie als Datenfeld.
Dim Array(1 to 200) as integer
Array(1) = 1
dann sind sie vom typ integer .
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)
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'.