Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1316to1320
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Listbox

Listbox
05.06.2013 21:45:58
jasmin
Hallo,
ich habe in einem Formular eine Listbox, in der man Monate auswählen kann.
Beim Öffnen des Formulars steht zunächst der aktuelle Monat in der Listbox.
Wenn ich jetzt aber auf abwärts drücke schreibt er mir Januar statt Juli hin. Und die aufwärts Funktion funktioniert überhaupt nicht.
Hat einer eine Idee woran das liegen könnte?

Die Datei https://www.herber.de/bbs/user/85668.xls wurde aus Datenschutzgründen gelöscht


lg

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Listbox
06.06.2013 02:30:50
Franc
öhmm ja ...
Warum das so ist sage ich gleich aber wozu die ganzen Change Ereignisse bei den Listboxen?
Ganz unten findest du auch einen Vorschlag wie ich das ändern würde.
Schreib bitte was passieren soll wenn man etwas auswählt bzw. ob auch im Arbeitsblatt was passieren soll und ich denk wir finden eine Lösung. ;-)
Der Grund warum jeweils der Monat und der Tag ganz oben stehen ist folgender
vor der Monatsschleife steht
Monat.AddItem Format(Sheets("Erfassungstabelle").Cells(1, 5), "mmmm")
heißt er fügt den aktuellen Monat als 1. Element ein und danach noch mal Jan bis Dez
lass die Zeile weg und es steht nur Jan bis Dez drin
das gleiche gilt für den Tag
Das befüllen könnte man hier auch anders gestalten.
Wenn du ein bestimmtes Feld vorwählen willst, nimm folgenden Code nach den 2 Schleifen
Monat.ListIndex = Month(Range("E1")) wählt für Juni die 6. Posi aus
AuswahlTag.ListIndex = Day(Range("E1")) wählt für den 6. die 6. Posi aus
Dann geht aber alles schief weil ich keine Ahnung habe was du mit den ganzen Makros mache willst.
Denk auch das es eine Eigenheit der Listbox ist das sie nur von der 1. bis zur letzten Posi geht und nicht von der letzen automatisch auf die 1. springt.
Während du scrollst wählst du auch noch nichts aus sondern gehst nur die Liste durch.
Ausgewählt wird erst wenn du in die Listbox reinklickst aber dann geht wieder alles schief weil ...
... der Fehler kommt bei mir immer bei wZelle = wZelle + 1
Gut - das liegt sicher daran das du wZelle als Range definiert hast.
Aber selbst wenn nicht wüßte ich nicht warum du das +1 zählen willst.
Wenn du das ausgewählte Item der Listbox haben willst, kannst du das wie folgt auslesen.
aktuelleItem = Monat.List(Monat.ListIndex)
Versteh aber auch nicht was du mit dem ganzen change Code bewirken willst.
Anstatt einer Listbox würde ich ein Text oder Eingabefeld nehmen und einen Drehbutton daneben.
ich habe das mal in deiner Liste abgeändert sprich die Listboxen weg und durch textfelder und direkt daneben die Drehbutton ersetzt.
Den Changecode habe ich erstmal gelöscht.
Kannst ja erstmal schauen ob das so nicht besser ist.
Habe den Code für Initialisierung der Userform angepasst

Die Datei https://www.herber.de/bbs/user/85669.xls wurde aus Datenschutzgründen gelöscht


Wie erwähnt sag was du gerne haben möchtest und wir finden sicher eine gute Lösung.

Anzeige
Ergänzung
06.06.2013 02:38:50
Franc
Du musst beim Drehbutton Code für den Monatswechsel noch folgendes am Ende einbauen
Musst es in ein

Sub setzen damit ich es posten konnte

Sub damit_ich_es_posten_kann
If Tag_Wechsel > Day(WorksheetFunction.EoMonth(DateSerial(Year(Date), Monat_Wechsel.Value, 1),  _
0)) Then
Tag_Wechsel = Day(WorksheetFunction.EoMonth(DateSerial(Year(Date), Monat_Wechsel.Value, 1),  _
0))
AuswahlTag = Day(WorksheetFunction.EoMonth(DateSerial(Year(Date), Monat_Wechsel.Value, 1),  _
0))
End If
End Sub
Falls nämlich 31 ausgewählt wurde und man zu einem Monat springt der nichts 31 Tage hat wird es automatisch auf die max. Anzahl Tage des Monat gesetzt

Anzeige
AW: Ergänzung
06.06.2013 11:55:31
jasmin
Hallo,
erst einmal vielen Dank für die Hilfe.
Also das Aktuelle Datum von heute soll immer erst mal in dieses Formular eingetragen werden.
Ich hatte das auch schon versucht mit einem Textfeld und einem Drehbutton allerdings kamen dann immer fehlermeldungen und da ich nicht so viel verstehe von vba hab ich das wieder gelöscht.
Hab deinen Code noch eingesetzt. Funktioniert alles soweit ich das gesehen habe :)
Ich hab jetzt noch eine Frage die zwar nicht zu dem Drehfeld gehört aber vllt weisst du da auch eine Lösung.
In der Tabelle Statistik werden die Werte aktualisiert wenn man die aufruft. Allerdings wird der Wert für klein nicht aktualisiert und ich weiss nicht wieso. Die Summe und die anderen zwei Werte stimmen immer.
lg

Anzeige
AW: Ergänzung
06.06.2013 12:05:39
jasmin
Ich hab grade gemerkt, dass etwas nicht funktioniert :(
Und zwar soll in der ersten Tabelle der Wert erhöht werden bei dem Datum, dass ich eingetragen habe in das Formular. Das ging vorher und jetzt nicht mehr. Der folgende Code war dafür zuständig
Sub WertErhöhen()
Const spMonat As Long = 2, spAnzMonat As Long = 4, zlAnzKopf As Long = 4
Dim ix As Integer, wZelle As Range
For ix = LBound(fmDWahl) To UBound(fmDWahl)
If IsNull(fmDWahl(ix)) Then Exit Sub
Next ix
With Worksheets("Erfassungstabelle")
Set wZelle = .Cells(zlAnzKopf + fmDWahl(0), spMonat + spAnzMonat * (fmDWahl(1) - 1) +  _
fmDWahl(2))
End With
DoEvents
wZelle.Select
wZelle = wZelle + 1
Set wZelle = Nothing
End Sub

Anzeige
AW: Ergänzung
06.06.2013 17:10:48
Franc
OK - nu weiß ich auch was du genau wolltest. ^^
Gut - das funktioniert momentan nicht, weil ich das gelöscht hatte.
Hatte es denn vorher funktioniert? - wie gesagt lief das bei mir immer auf Fehler wenn ich was ausgewählt hatte.
Soweit ich das verstehe sollte es doch reichen wenn es um 1 erhöht wird wenn du die "Rechnung schreibst"
Würde bei jedem ChangeEreignis der Wert um 1 erhöht werden, würde doch jede Änderung des Tags / Monats / Schiffsgröße den Wert und eins erhöhen und die Statistik verfälschen oder?
Einzige Bedingung zum erhöhen ist soweit ich das verstehe nur das alle 3 Felder ausgefüllt sein müssen.

Anzeige
AW: Ergänzung
06.06.2013 17:24:00
jasmin
Genau so meine ich das! Ich möchte das so haben, wenn ich das Formular aufrufe und alles eingetragen habe und dann auf Erfassen drücke, dass sich der Wert am entsprechenden Tag und Monat um eins erhöht.
Vorher hat es funktioniert mit der Bedingung, dass man die einzelnen Felder auswählen musste (also die mussten so blau unterlegt sein wie das von der Kategorie). Aber da hatte ich ja auch diese Listboxen noch drinne. Mir ist gesagt worden das der Code wohl von den Listboxen abhänig ist.

AW: Ergänzung
06.06.2013 21:34:22
Franc
sry das es so lang gedauert hat ... gab paar Eigenheiten die ich nur mit nem Umweg lösen konnte.
Hab noch mal alles umgeschrieben und sollte so funktionieren wie du es willst.
Wenn was anders sein soll sagen.
Wenn alles so ist wie du es willst kann ich noch mal ausführliche Kommentare einfügen und die Tabelle noch mal hochladen. Aktuell ist es nur dürftig bis nicht kommentiert.
Da ich Probleme mit dem festlegen des Druckbereichs bekam habe ich das im Blatt selbst festgelegt und den Code selbst rausgenommen. Ist normal auch unnötig weil er sich das merkt.
Problem war das beim Wechsel zu Rechnungen Excel abgestürzt ist.
Aktuell denke ich noch das ich so gut wie alles berücksichtigt habe. (sobald ich das absende fällt mir sicher noch was ein ^^)
Die Druckseite wird automatisch geleert wenn man auf drucken klickt.
Prüffunktionen sollten auch komplett sein.
Fehler ist mir so erstmal keiner aufgefallen.
Teste es aber ruhig ausgiebig. ^^
Im Makro selbst beziehe ich mich auf fast keine Angaben aus dem Tabellenblatt - nur das Preis prüfen habe ich so gelassen wie du es hattest.
Die oberen 3 Felder sind nun alles Comboboxen. (find ich viel praktischer ^^)
https://www.herber.de/bbs/user/85690.xls

Anzeige
AW: Ergänzung
06.06.2013 21:44:43
Franc
genau das mein ich mit "mir fällt sicher was ein wenn ich auf senden drücke" ^^
du hattest ja noch eine Frage
ja - der Fehler liegt hier
For sK = 0 To 1
mach daraus
For sK = 0 To 2
und es wird auch "klein" berücksichtigt ;-)

AW: Ergänzung
06.06.2013 21:50:47
jasmin
Vielen Dank. Aber ich muss für Tag und Monat diese Drehbuttons haben.
Kann man das einfach ändern oder funktioniert dann wieder etwas nicht?

AW: Ergänzung
06.06.2013 23:06:15
Franc
so - Scrollbalken wieder hinzugefügt aber diesmal wird der Tag und Monat in einem Bezeichnungsfeld angezeigt. Das auch besser so, weil dann viel weniger Probleme auftreten können und man auch kaum was prüfen muss. ^^
Kann aus den Bezeichnungsfeldern auch wieder Textfelder machen aber dann muss da mehr Prüfcode rein.
So hat man halt gar keine Möglichkeit die zu ändern und es können von vornherein nur gültige Daten drinstehen und bei der Listbox war es im Grund auch nicht anders.
https://www.herber.de/bbs/user/85692.xls
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige