VBA Array erstellen

Neue Frage »

Auf diesen Beitrag antworten »
Corny VBA Array erstellen

Hallo
Ich benötige eure Hilfe.
Ich möchte 36 Rechtecke zu einem Array zusammenfassen. Hab mir folgendes überlegt.
Meine Rechtecke haben den Namen R0,R1,R2......

Dim Quad(35) As Control
Quad=Array(R0,R1,R2,R3,R4....,R35)
Set Quad(0) =R0
Set Quad(1)=R1
Set Quad(2)=R2
.
.
.
Set Quad(35)=R35

Kann man das auch kürzer schreiben, z.B. mit einer Schleife.
Möchte es auch noch global haben. Also müsste ich es ja direkt oben unter Option Explicit schreiben oder?

Wäre über Ratschläge sehr erfreut.
 
Auf diesen Beitrag antworten »
David_pb

Was für Rechtecke sind das denn?

code:
1:
2:
Quad=Array(R0,R1,R2,R3,R4....,R35)


Dies füllt dein Array ja bereits, du brauchst die einzelnen Einträge also nicht nochmals zu zuweisen.

Zitat:
Möchte es auch noch global haben. Also müsste ich es ja direkt oben unter Option Explicit schreiben oder?


Zur Variablen Lebensdauer findest du hier etwas: http://www.ozgrid.com/VBA/variable-scope-lifetime.htm
Auf diesen Beitrag antworten »
Corny

Des sind einfach aufgezogene Rechtecke, die ich durch eine Randomize funktion sichtbar machen möchte.
Aber es klappt wie du es geschrieben hast, wenn ich es nur mit Array schreibe.
Der Link war auch toll.
Hast mir sehr weitergeholfen.
Danke
Auf diesen Beitrag antworten »
Corny

Ich bin jetzt schon wieder auf ein Problem gestoßen.
Meine Rechtecke sollen sich nun beliebig auf dem Bildschirm bewegen. Das klappt ganz gut. Nur hab ich das Problem, dass die Rechtecke sich aus dem Bildschirm bewegen und man dann erst nach unten Scrollen muss, um sie weider zu sehen.
Hab mir überlegt, dass ich die maximalen Werte für den Bildschrim festlegen muss.
Das j bezeichnet das enstprechende Rechteck und das i wird durch eine Schleife vergrößert, dass die Bewegung gleichmäßig verläuft.

Quad(j).Move Quad(j).Left + 3 * i, Quad(j).Top - 20 * i

If Quad(j).Top = 0 then
Exit Function
End If
Wie kann ich jetzt maximalen Werte für die Bewegung festlegen? Weil so wie ich es mir gedacht hab in die If-Anweisung zu schreiben klappts leider nicht.
 
Auf diesen Beitrag antworten »
David_pb

Wenn du auf Gleichheit Testest ist es wahrscheinlich, das du den Zeitpunkt verpasst, wenn deine Bewegung nicht Pixelweisse ist. Nimm lieber die Operatoren für "Kleiner Gleich" und "Größer Gleich".
Auf diesen Beitrag antworten »
Corny

Hey.
Ja stimmt, der hat die Werte übersprungen. Mit kleiner gleich funktioniert es. Hab auch gedacht, dass die Angaben in cm sind, dabei sind sie in mm.
Vielen Dank
Auf diesen Beitrag antworten »
Corny

Ich meine natürlich Twips nicht mm
Auf diesen Beitrag antworten »
David_pb

Ja, Twips... Du kannst das glaub ich auch in andre Metriken umstellen.
Auf diesen Beitrag antworten »
Corny

Hab schon wieder mal eine Frage.
Möchte nämlich die Rechtecke bewen lassen und wenn sie zu nahe am Rand sind, sollen sie sich in die andere Richtung bewegen. Aber wenn man das Programm dann auf einem anderen Bildschirm testet, ändert sich ja die Bildschirmgröße. Deshalb kann man es ja nicht mit festen Werten machen.
Kann man die Bildschirmgröße berechnen lassen?
 
Neue Frage »
Antworten »


Verwandte Themen

Die Beliebtesten »
Die Größten »
Die Neuesten »