Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Index eines Feldes beibehalten
#1
Hallo liebe Leute,

wenn ich mein Array folgendermassen deklariere ReDim arrayFeld(10 to 20) fängt der Index laut der Deklarationsvorschrift bei 10 an.

Nun weise ich diesem Array die Werte aus einem Range Bereich  zu, also  arrayFeld = Range("A10:A10")

und schwups passiert folgendes, der Index von arrayFeld fängt bei 1 an. Wie ist es möglich, dass sich der durch die Deklarationsvorschrift

angegebene Start des Index bei 10 nicht verändert?

Vielen dank schon mal für eure Hilfe.
Antworten Top
#2
Hallo,

wenn Du ein Feld beim Dim nicht fest vorgibst, bleibt es variabel und nimmt je nach codefortschritt unterschiedliche Größen und Indizees an. Warum soll es denn bei 10 anfangen?
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#3
Hallo Andre,

danke für deine Antwort. Warum bei 10? Nun ja, wenn man Code schreibt, hat mein eine Vorstellung davon wie er funktionieren sollte bzw. wie man meint das dieser funktioniert. Bei mir hat das fehlende Wissen, dann zu einer Fehlermeldung geführt.
Antworten Top
#4
Weil VBA dieses macht:



Code:
Sub M_snb()
   MsgBox Range("A10:k20").Cells(1, 1).Address
   MsgBox Range("A10:k20").Cells(2, 1).Address
   MsgBox Range("A10:k20").Cells(3, 1).Address

   MsgBox Range("A10:k20").Cells(1, 1).Address
   MsgBox Range("A10:k20").Cells(1, 2).Address
   MsgBox Range("A10:k20").Cells(1, 3).Address
End Sub
Antworten Top
#5
Hallöchen,

Zitat:MsgBox Range("A10:k20").Cells(1, 1).Address ...
da fehlt mit aber jetzt eine Lampe, dass mir ein Licht aufgeht Idea

Elke, in der Regel wird mit dem ersten Index 0 gearbeitet. Es gibt bei der Anwendung eine Ausnahme und vielleicht einen Grund, mit 1 zu beginnen.
Die Ausnahme hatten wir ja jetzt, wenn es um die direkte Übernahme ganzer Zellbereichen geht.
Ein anderer Grund liegt z.B. bei den Programmierern, die bei der Schleifenprogrammierung besser damit zurecht kommen oder es der Einfachheit halber nutzen. Wenn man 10 Elemente im Array hat, muss man immer 1 "umdenken", wenn das Array von 0 bis 9 geht. Wenn man z.B. ein Array zellweise füllt, muss man unter Umständen den Versatz zum ersten Arrayindex berücksichtigen.
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste