Registriert seit: 15.03.2018
Version(en): 2010
02.05.2018, 15:19
(Dieser Beitrag wurde zuletzt bearbeitet: 02.05.2018, 18:19 von Glausius.)
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
Registriert seit: 11.04.2014
Version(en): Office 2007
02.05.2018, 15:27
(Dieser Beitrag wurde zuletzt bearbeitet: 02.05.2018, 15:28 von Steffl.
Bearbeitungsgrund: Text ergänzt
)
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.
Gruß Stefan Win 10 / Office 2016
Folgende(r) 1 Nutzer sagt Danke an Steffl für diesen Beitrag:1 Nutzer sagt Danke an Steffl für diesen Beitrag 28
• darthkali
Registriert seit: 15.03.2018
Version(en): 2010
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.
Registriert seit: 11.04.2014
Version(en): '97 bis 2016; 365
02.05.2018, 16:56
(Dieser Beitrag wurde zuletzt bearbeitet: 02.05.2018, 16:56 von Käpt'n Blaubär.)
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:
Registriert seit: 28.05.2014
Version(en): 2013 / 2016
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 ...
Beste Grüße Günther
Excel-ist-sexy.de …schau doch mal rein! Der Sicherheit meiner Daten wegen lade ich keine *.xlsm bzw. *.xlsb- Files mehr herunter! -> So geht's ohne!
Registriert seit: 11.04.2014
Version(en): '97 bis 2016; 365
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:
Registriert seit: 28.05.2014
Version(en): 2013 / 2016
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).
Beste Grüße Günther
Excel-ist-sexy.de …schau doch mal rein! Der Sicherheit meiner Daten wegen lade ich keine *.xlsm bzw. *.xlsb- Files mehr herunter! -> So geht's ohne!
Registriert seit: 17.04.2014
Version(en): MS Office 365(32)
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
Registriert seit: 11.04.2014
Version(en): '97 bis 2016; 365
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"
Registriert seit: 11.04.2014
Version(en): '97 bis 2016; 365
02.05.2018, 21:41
(Dieser Beitrag wurde zuletzt bearbeitet: 02.05.2018, 21:41 von Käpt'n Blaubär.)
Hallo Uwe,
Deine Lösung ist auch nicht schlecht. Die gefällt mir sogar Prima bis Oberprima.
|