Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
236to240
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
236to240
236to240
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Formatproblem mit Listbox

Formatproblem mit Listbox
27.03.2003 20:19:44
Frank
Hallo VBA / Excell Experten
Ich hänge an einem Problem und komme nicht weiter:

In meiner Artikeldatenbank habe ich folgende Artikelnummern:
300'000.00
300'000.01
etc.

Die Zellen sind als Zahlen mit 2 Dezimalstellen und Punkt als Dezimaltrennzeichen formatiert. (Ländereinstellung Deutsch(Schweiz))
Um einen Artikel auszuwälen fülle ich die Artikelnummern in eine Listbox. Anschliessend lese ich die Nummer des ausgewählten Artikels wieder raus und suche ihn in der Datenbank.

Mein seltsames Problem dabei:
Es gibt Zeiten, wo alles wunderbar funktioniert. Aber es kommt vor, dass in der Listbox die Artikel plötzlich mit Kommas anstelle von Punkten dargestellt werden:
300'000,00
300'000,01
etc.
Anschliessend finde ich den Artikel nicht mehr, da dort keine Kommas vorkommen. Ich habe schon festgestellt, dass während meinem Suchen und testen plötzlich wieder Punkte dargestellt werden.

Woher kann so etwas kommen ?
Wie wird das Format in der Listbox beeinflusst ?
Gibt es einen Befehel, mit dem ich solche Zufallsformatierungen verhindern kann ?

Für Eure Hilfe bin ich dankbar.

Frank

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

Betreff
Datum
Anwender
Anzeige
Re: Formatproblem mit Listbox
27.03.2003 20:39:08
Rainer Wittstock

Hallo Frank,

ich glaube, ich kenne dein Problem.
Das hatte ich auch:
Nachdem ich meine UserForm aufgerufen hatte, änderten sich die Formatierungen: Tausendertrennzeichen (.) zu Komma, Dezimalkomma zu Punkt.
Ursache: Die Ländereinstellung hatte sich NICHT verändert. Bei mir trat das Problem nur dann auf, wenn ich eine UserForm aufrief die wiederum eine Arbeitsmappe öffnete - aber NUR DANN, wenn ich die UserForm aus der Entwicklungsumgebung startete. Excel muss dann intern die amerikanische Ländereinstellung angenommen haben.
Habe ich dann Excel geschlossen und wieder geöffnet, war wieder alles ok - auch mit meinen Tabellen.

Gruß Rainer

Anzeige
Re: Formatproblem mit Listbox
27.03.2003 22:18:56
Frank

Hallo Rainer
Danke für deinen Hinweis. Ist gut möglich, dass es damit zusammenhängt. Ich stellte das auch immer während der Entwicklung fest. Die Userform startete ich jedoch immer aus der Tabelle raus.
Mein Problem ist damit noch nicht gelöst: In der Anwendung schreibt das Programm die Zahlen immer mit Kommas. Kennst Du einen Weg, wie dies verhindert werden kann ?

Re: Formatproblem mit Listbox
28.03.2003 18:54:34
Rainer Wittstock

Hallo Frank,

läßt sich dein Code so weit extrahieren, dass dieses noch Phänomen auftritt? Wenn du möchtest, dann schicke mir die Datei mal zu.

Gruß Rainer

Re: Formatproblem mit Listbox
28.03.2003 21:14:09
Frank

Hallo Rainer

Also: Ich habe die Ländereinstellung Deutsch (Schweiz) eingestellt. Das heisst, dass die Dezimaltrennzeichen als Punkte dargestellt werden.

Schreibe in eine Tabelle die folgenden Zahlen (Artikelnummern)

3000.01 Artikeltext 1
3000.02 Artikeltext 2
3000.03 Artikeltext 3

Steht der Cursor auf der Zelle der ersten Artikelnummer, starte die folgende Userform mit der Listbox1 (mit 2 Kolonnen, je 60 Pt):

Private Sub UserForm_initialize()
i = 0
Do While Not ActiveCell.Offset(i, 0).Value = Empty
ListBox1.AddItem
ListBox1.List(i, 0) = ActiveCell.Offset(i, 0)
ListBox1.List(i, 1) = ActiveCell.Offset(i, 1)
i = i + 1
Loop
End Sub

Wenn ich meinen Computer neu starte, erscheinen in der Listbox immer Kommas anstelle der Punkte. Wenn ich dann am Programmieren und tüfteln bin, stelle ich fest, dass plötzlich die Punkte angezeigt werden. Dann funktioniert alles bestens. Ich kannd die Userform aus dem VBA Editor starten oder in der Tabelle, das macht dann keinen Unterschied.

Gruss Frank



Anzeige
Re: Formatproblem mit Listbox
29.03.2003 15:38:46
RainerW

Hallo Frank,

bei mir tritt dasselbe Phänomen auf.
Zusätzlich wird bei mir das Tausendertrennzeichen (') NICHT angezeigt; egal ob Ländeinstellung Deutsch(Schweiz) oder Deutsch(Deutschland) eingestellt ist.

Das muss wohl mit deinem Code zusammenhängen, wenn du deine ListBox über ActiveCell lädst.

Beispiel:
Gibst du in A1 das Datum 29.02.1900 ein, erkennt es Excel als gültiges Datum, weil es rechts ausgerichtet wird.
Das Jahr 1900 war aber kein Schaltjahr!!
Fragst du nun über die Funktion

Private Sub Datum()
If IsDate([A1]) Then Beep
End Sub

die Zelle A1 ab, wird ein gültiges Datum bestätigt (Beep).


Gibst du aber den 29.02.1900 in eine Textbox ein,

Private Sub Datum()
If IsDate(TextBox1) Then Beep
End Sub

ist das Datum falsch.

Daraus schließe ich, dass die IsDate-Funktion in der TEXTBOX »berechnet«, ob ein Schaltjahr vorliegt.
In der Zelle A1 »vertraut« IsDate Excel, weil das Datum ja rechts ausgerichtet ist, und »berechnet« nicht mehr das Datum.

So ähnlich könnte es sich bei deinem Code verhalten. Es wird nicht mehr die Ländereinstellung abgefragt, sondern irgendetwas Internes verwendet.


Wenn ich deine ListBox über die RowSource-Eigenschaft lade, funktioniert alles blendend!!

In deinem Beispiel habe ich gesehen, dass die angezeigten Spalten in deiner Listbox abhängen von der aktuellen Zellmarkierung. Da ich nicht wußte, ob das von dir beabsichtigt ist, habe ich zwei Routinen für dich vorbereitet:

1. ListBox normal laden mit Datensätzen
2. ListBox laden in Abhängigkeit von Zellmarkierung


Viel Erfolg
Rainer



Anzeige
Re: Formatproblem mit Listbox
29.03.2003 17:56:02
Frank

Hallo Rainer

Besten Dank für Deine Hilfe. Ich werde es mal ausprobieren. Da ich in VBA relativ unerfahren bin, verstehe ich noch nicht ganz alle Befehle. Ich muss diese dann mal genauer studieren. Ich habe mit dem Buch von René Martin, VBA mit Office 2000 lernen mich in VBA eingearbeitet. Mir fehlen jedoch noch einige Kenntnisse und vorallem kenne ich noch nicht alle Befehle. Kennst Du gute Literatur, die mir beim Einstieg nützlich sein könnten ?

Bei meinem Bespiel muss eigentlich nichts markiert sein, die aktive Zelle muss nur auf der ersten Artikelnummer stehen. Der Grund ist der:
Wir haben eine Datenbank aufgebaut, die in verschiedenen Tabellen (entspricht Artikelgruppen) die Artikel aufführt. Dabei besteht ein Artikel meistens aus einer ganzen Anzahl von Zeilen, die jede eine eigene Artikelnummer haben. Um ein Angebot zu erstellen suchen wir über eine Userform die Artikel. Dabei fülle ich eine Combobox mit den Gruppennamen und kann eine Gruppe auswählen. In einer ersten Listbox zeige ich alle Artikeltitel mit den Nummern XXXXXX.00 an.

Sobald ich einen Artikeltitel anwähle, zeige ich in einer zweiten Listbox die folgenden Zeilen an. Für das Anzeigen der Folgezeilen springe ich mit dem find Befehl die Nummer der Titelzeile an und fülle dann die Listbox. Dabei zeige ich nicht alle Spalten an, sondern nur ausgewählte.

Im gesandten Beispiel will ich eigentlich nur 2 Kolonnen darstellen, diese sind aber immer fix. Da ich jedoch nicht weiss, wieviele Zeilen der Artikel hat, habe ich diese Form gewählt. Ich hatte ursprünglich über einen Array gearbeitet, doch dort tritt der Fehler auch auf.

Ich habe das Gefühl, dass es irgend eine interne Einstellung gibt, die wir nicht kennen, die festlegt, wie die Inhalte der Zellen formatiert werden. Dies aus dem Grunde, da das Format mal wie gewollt angezeigt wird und mal nicht. Dies passiert mir auch beim Erstellen des Beispiels !

Gruss Frank




Anzeige
Re: Formatproblem mit Listbox
29.03.2003 19:44:16
RainerW

Hallo Frank,

als Buchtipp empfhele ich »Hans Herbers Excel-CD-ROM (ca.25MB)«!!
In diesem Forum zu bestellen.

Klicke hier um einen Überblick zu bekommen: http://www.excel-cd.de/

Der Unterschied zu den Büchern:
Die Excel-CD-ROM ist aufgebaut wie die Windows-Hilfe.
Du suchst was zu ListBox? Gut, gib den Suchbefehl ListBox ein und es werden alle Beispiele aufgelistet, in denen eine ListBox vorkommt.

Du willst alle leere Zeilen in einer Datenbank löschen?
Suche nach Zeilen oder löschen.

Die CD bringt eine Fülle an Beispielen - direkt aus dem Programmieralltag gegriffen. In den Büchern wird an ein paar wenigen Beispielen fast das ganze Buch gefüllt. Suche in einem Buch mal nach Formeln:
Wie wird z.B. der Sverweis angewendet?
Und wie der Wverweis?
Wie kopiere ich per VBA Daten von einer Tabelle in eine andere?
Wie ermittle ich den letzten Datensatz in meiner Tabelle.
Du suchst dir einen Wolf.

Bücher bringen dir das kleine Einmaleins bei. Das ist auch wichtig für das Verständnis.

Aber seien wir doch mal ehrlich: man fängt zu programmieren an - und möchte schnell etwas Fertiges sehen.
Dazu sind die Bücher weniger geeignet.

Aber mit der CD-Rom: Suchen - anpassen - einfügen!
Jedenfalls wenn es sich um kleine Beispiele handelt.
Versteht man einige Funktionen nicht, schaut man in der Online-Hilfe in Excel oder VBA nach. Liest sich das durch und kommt dann mehr oder weniger langsam dahinter, was sich hinter dem Code auf der CD verbirgt.

Wenn du Fragen zu meinem kleinen Beispiel hast Frank, maile mich doch direkt an. Ich meine ich hätte es sehr schön kommentiert - aber dabei gehe ich natürlich von mir aus.

Als Tipp:
Datensätze gehören IMMER in EINE Zeile!!!
Sonst gibt es irgendwann Theater in deiner Datenbank.
Excel bietet dir dafür 256 Spalten an.
Willst du bestimmte Datensätze auswählen, lädst du sie wieder in die Eingabemaske - wenn vorhanden.

Auch sollte man bei Programmierung darauf achten, dass der Code funktioniert - EGAL wo die Zellmarkeirung steht.
Sonst kann es schnell vorkommen, das Daten gelöscht oder überschrieben werden, wenn mehrere Tabellenblätter oder Mappen geöffnet sind.
Deswegen habe ich »wks« eingefügt.
wks.Range("A3") bezieht sich immer auf die Mappe und das Blatt, auch wenn andere Mappen geöffnet sind.

sAdr, ZellMarkierung, iZMSpalte sind Variablen, du kannst sie auch Tasse, Teller, Gabel nennen. Es erleichtert dir aber das Zurechtfinden in deinem eigenen Code, wenn sie irgendwie sinnvoll und einen Bezug zum Code haben.

cnt, wks sind auch Variablen - sind aber "genormt".
cnt für Control (Buttons, Textbox, Combobox etc.
wks Worksheet
wbk Workbook
cmd CommandButton
lbl Label
img Image
pic PictureBox
cht Chart
frm UserForm
spn SpinButton
hsb HSrollBar
cal Calendar
cbo ComboBox
chk CheckBox
lst ListBox
mpg MultiPage
opt OptionButton
fra Frame
tab TabStrip
scr ScrollBar
sta StatusBar
tlb CommandBars
txt TextBox
tgl ToggleButton

Alles auf der CD-Rom!


Gruß Rainer





Anzeige
Re: Formatproblem mit Listbox
29.03.2003 21:37:05
Frank

Hallo Rainer

Danke für Deine Hinweise. Es stimmt, Dein Beispiel ist gut kommentiert. Ich kenne nur noch nicht alle Befehle und muss mich dann mal "durchkämpfen".

An und für sich macht mir VBA Spass, mir fehlt vorallem die Erfahrung, oft sind es Kleinigkeiten, die mich aufhalten. Ansonsten kann man ja ganz schöne Sachen machen.

Gruss Frank

Re: Formatproblem mit Listbox
31.03.2003 21:24:26
Frank

Hallo Rainer !

Ich konnte in der Zwischenzeit deinen Code prüfen, er funktioniert auch bei mir.
Leider konnte ich ihn nicht verwenden, da ich in meiner Listbox nicht aneinanderhängende Zellbereiche abbilden will.
Um das Problem zu umgehen, ersetze ich das Komma durch einen Punkt, wenn ich die Artikelnummer suchen muss. Das funktioniert gut, auch wenn es nicht die schlankeste Lösung ist!
Ich werde vermutlich das Problem nochmals ins Forum bringen, da es mich interessiert, ob es vermieden werden kann.
Gruss Frank

Anzeige
Re: Formatproblem mit Listbox
02.04.2003 17:51:59
RainerW

Hallo Frank,
Hauptsache es klappt!

Gruß Rainer

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige