Informatiker Board (http://www.informatikerboard.de/board/index.php)
- Themengebiete (http://www.informatikerboard.de/board/board.php?boardid=1)
-- Sonstige Fragen (http://www.informatikerboard.de/board/board.php?boardid=25)
--- VBA Array erstellen (http://www.informatikerboard.de/board/thread.php?threadid=647)


Geschrieben von Corny am 02.02.2010 um 19:39:

  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.



Geschrieben von David_pb am 02.02.2010 um 20:18:

 

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



Geschrieben von Corny am 06.02.2010 um 18:27:

 

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



Geschrieben von Corny am 10.02.2010 um 16:56:

 

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.



Geschrieben von David_pb am 11.02.2010 um 13:14:

 

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".



Geschrieben von Corny am 11.02.2010 um 18:00:

 

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



Geschrieben von Corny am 11.02.2010 um 18:30:

 

Ich meine natürlich Twips nicht mm



Geschrieben von David_pb am 12.02.2010 um 17:30:

 

Ja, Twips... Du kannst das glaub ich auch in andre Metriken umstellen.



Geschrieben von Corny am 23.02.2010 um 20:22:

 

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?


Forensoftware: Burning Board, entwickelt von WoltLab GmbH