Hallo Zusammen,
ich habe ein kleines Problem, bei dem ich gerade auf dem Schlauch stehe. und zwar möchte ich eine Array mit werten füllen, was soweit auch ohne Probleme funktioniert. Jedoch wird in meiner schleife eine extra Zeile in dem Array erzeugt, welche leer ist.
Ich habe mal folgenden Beispielcode aufgesetzt. ein 1-D Array mit 10 Werten. Wenn ich dieses Array jetzt an eine ListBox übergebe, dann habe ich in der Listbox 11 Zeilen. Die letzte davon ist leer.
Ich habe die ListBox auch mal manuel gefüllt, also über AddItem, da ich dachte, dass die ListBox die Zeile vlt einfügt. Hier ist das aber nicht der Fall.
Ich arbeite nicht zum erstem mal mit Arrays, aber irgendwie ist mir dieser Fehler noch nicht aufgefallen.
Code:
Sub test()
Dim arr(10)
For i = 0 To 9
arr(i) = i
Next i
UserForm1.ListBox1.List = arr
UserForm1.Show
End Sub
Hallo,
das Array ist nullbasiert, das heißt hier
dimensionierst Du ein Array mit
11 Elementen.
Hier
geht die Schleife aber nur über 10 Elemente.
Ok ich habe den Schlauch gefunden.
Es muss:
heißen und nicht
Ich dachte immer, das man dort die reine Anzahl angibt :)
Alles klar problem gebannt.
Hallo,
das mit dem "einfach die Zahl hinschreiben" funktioniert auch
:05:
Das kostet dann aber eine Codezeile mehr
Zitat:Option Base-Anweisung
Wird auf Modulebene verwendet, um die voreingestellte Untergrenze für Indizes von Datenfeldern zu deklarieren.
Syntax
Option Base {0 | 1}
Bemerkungen
Da die Indizes standardmäßig mit 0 beginnen, wird die Option Base-Anweisung niemals wirklich benötigt. Wenn sie dennoch verwendet wird, muß die Anweisung in einem Modul vor allen Prozeduren auftreten. Option Base kann nur einmal pro Modul auftreten und muß vor allen Deklarationen von Datenfeldern stehen, die Dimensionen enthalten.
Anmerkung Mit dem To-Abschnitt in den Anweisungen Dim, Private Public, ReDim oder Static können Sie den Bereich von Datenfeldindizes flexibler steuern. Wenn Sie jedoch die untere Grenze nicht explizit mit einem To-Abschnitt festlegen, können Sie die Standarduntergrenze mit Option Base auf 1 ändern. Die Basis eines mit der Array-Funktion oder dem Schlüsselwort ParamArray erstellten Datenfeldes ist Null; Option Base hat keinen Einfluß auf Array oder ParamArray.
Die Option Base-Anweisung wirkt sich nur auf die Untergrenze von Datenfeldern aus, die sich in dem Modul befinden, das die Anweisung umgibt.
Das stammt zwar aus der VBA-Hilfe im Excel.
Besser hätte ich das aber auch nicht beschreiben können :05:
Doch Peter, dir traue ich es dennoch zu ...
DENN: Du hättest gewiss auch den Fall beschrieben, dass Mensch ja einen Bereich markiert und dann einem Array zuweist. Selbstverständlich ist solch ein Array dann (automatisch immer) 1-basiert (und auch bei 1 Spalte mehrdimensional). Insofern wäre dann das von gewissen (natürlich männlichen) IT-lern als "Frauen-Schalter" verschriene
Option Base 1 für eine durchgängige Logik gut ...
Hallo Günther,
nun muß ich aber erst mal ernsthaft drüber nachdenken, ob das nun ein Klopfer auf die Schulter
oder eher der Tritt in den Allerwertesten war :05: :15: :05:
Moin Peter,
ganz klar ein Klopfen auf die Schulter!
Der Tritt hätte in Richtung MS gehen können, die den Text imho in dem Fall ziemlich Scheuklappen-ausgestattet niedergeschrieben haben.
Du hingegen zeichnest dich doch durchgängig dadurch aus, dass du (versuchst), alle Aspekte zu beleuchten. (Ohne jegliche Ironie).
Hallo Zusammen,
man kann sich auch angewöhnen, die Untergrenze eines Arrays und für jedes Array eventuell auch verschieden direkt festzulegen.
Also z.B.
Dim arr(1 To 10)
oder auch
Dim arr(-2 To 10)
Option Base kann nur 0 oder 1 und greift nur, wenn die Untergrenze bei der Dimensionierung eines Arrays nicht angegeben wird.
Gruß Uwe
Hallo Günther,
uiiiiii, ich freue mich
Zitat:Du hingegen zeichnest dich doch durchgängig dadurch aus, dass du (versuchst), alle Aspekte zu beleuchten. (Ohne jegliche Ironie).
Endlich habe ich mal einen Forennutzer gefunden, der meine Beiträge auch liest :05:
Leider verstärkt sich bei mir von Jahr zu Jahr ständig das Gefühl, daß mein Stil
der Herangehensweise immer weniger angenommen wird. Der Sinn eines Forums
geht dabei leider auch mehr und mehr den Bach runter.
Ey, ... meinst Du das etwa so ... kommt leider wesentlich besser an, als jede fundierte Lösung.
Spaß macht mir persönlich das Helfen in dieser Form überhaupt nicht mehr. Es ist für mich
keine Herausforderung, etwas mit heißer Nadel zusammenzustricken und den TE dann mit
einem "nach mir die Sintflut" abziehen zu lassen.
Wie hieß es schon in der Feuerzangenbowle: "
traurig, ... traurig, ... traurig"
Hallo Uwe,
Deine Lösung ist auch nicht schlecht. Die gefällt mir sogar Prima bis Oberprima.