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

Visual Basic Problem

Visual Basic Problem
24.06.2002 11:33:09
Volker Ventur
Ich habe vor einigen Jahren mit der Version Excel 5.0 ein Vorkalkulationsprogramm erstellt (Visual Basic war in deutsch). Mittlerweile werden die Visual-Basic-Programme in englisch ausgeliefert (wir arbeiten z.Zt. mit Excel 97), was zu folgenden Problem in meinem Programm führt:

Die Datenpflege erfolgt grundsätzlich über reine Dialogmasken, abgelegt werden diese Daten in Tabellen. Formeln und Formatierungen, die ich für die Darstellung in den Dialogmasken benötige, habe ich im Visual-Basic-Programm hinterlegt.

Mein Problem liegt darin begründet, dass aufgrund der englischen Version meine vorgegebene Formatierung #.###,00 'englisch' interpretiert wird, nämlich der 1000er-"." als ',' und das ',' als 1000er-".".

In einer Tabelle kann ich die Formatierung meinen Wünschen entsprechend anpassen, leider aber nicht im Programm. Gibt es, ohne eine großen Aufwand zu treiben, eine gute Lösung für dieses Problem? Die deutsche Schreibweise soll im übrigen beinehalten werden.

MfG

V. Ventur

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Deuetsche vs. englische Formate
24.06.2002 13:00:16
Martin Beck
Hallo Volker,

ich kann es nicht ausprobieren, aber versuche mal statt

#.###,00

#,###.00


Schau Dir auch mal die Hilfe zur Format-Funktion an.

Gruß
Martin Beck

Re: Deuetsche vs. englische Formate
24.06.2002 13:11:38
Volker Ventur
Hallo Martin,

danke für die Antwort.

Aber wie ich schon geschrieben habe, soll die deutsche Version beibehalten werden. Auch in den Tabellen, aus denen die Dialogmasken gefüllt werden sind die Formate in deutscher Formatierung.

Würde ich die Schreibweise im Programm so abändern, wie Du sie vorschlägst, würde er z.B folgendes machen:

Aus 2.555,00 (Tabellenformatierung) würde in der Dialogmaske 2.56. Wenn er mit diesem Wert außerdem noch weiterrechnen soll, so wie dies in einer Dialogmaske geschieht, kommen komplett falsche Ergebnisse heraus.

MfG

Volker Ventur

Anzeige
Re: Deutsche vs. englische Formate
24.06.2002 13:18:37
Martin Beck
Hallo Volker,

kann ich so nicht nachvollziehen. Poste doch bitte mal Deinen Code.

Gruß
Martin Beck

Re: Deutsche vs. englische Formate
24.06.2002 13:43:17
Volker Ventur
Auf deutsch:

Sub berechnen_walzleistung()

Setze Kopfbereich = BlattListe("Kopf").ZelleListe(1; 1).AktuelleRegion
DefinierenPosition = AktiverDialog.DropDownListe("Angebote").Listenindex
ZeilenNr = DefinierenPosition + 1

Mit DialogblattListe("Dialog WL")
.BezeichnungsfeldListe("Bezeichnung 80").Text = Format(Kopfbereich.ZelleListe(ZeilenNr; 10); "#.##0,00 kg/m")
Ende Mit

Entfall = Wert(DialogblattListe("Dialog WL").BezeichnungsfeldListe("Bezeichnung 58").Text) / 100
Ausbringen = Wert(DialogblattListe("Dialog WL").BezeichnungsfeldListe("Bezeichnung 59").Text) / 100
Einsatzlos = Wert(DialogblattListe("Dialog WL").BezeichnungsfeldListe("Bezeichnung 61").Text)
GesAusbr = Ausbringen - Entfall
Walzaderlänge = Wert(DialogblattListe("Dialog WL").BezeichnungsfeldListe("Bezeichnung 64").Text)
Blöcke_h = Wert(DialogblattListe("Dialog WL").BezeichnungsfeldListe("Bezeichnung 66").Text)
Rüstzeit = Wert(DialogblattListe("Dialog WL").BezeichnungsfeldListe("Bezeichnung 67").Text)
A_Störanteil = Wert(DialogblattListe("Dialog WL").BezeichnungsfeldListe("Bezeichnung 68").Text) / 100
Metergewicht = Kopfbereich.ZelleListe(ZeilenNr; 10)
Leistung = Wert(DialogblattListe("Dialog WL").BearbeitungsfeldListe("BF 41").Text)
Betriebsauftragslos = (Ausbringen - Entfall) * Einsatzlos
Blockgewicht = Walzaderlänge * Metergewicht
B_Störzeit = 0,07
Gesamtzeit = (Einsatzlos / GesAusbr) / (Blöcke_h * Blockgewicht / 1000) * (1 + A_Störanteil + B_Störzeit) + Rüstzeit / 10

Wenn Leistung = 0 Dann
A_Leistung = 10 * 1 / (1 / (Blockgewicht * Blöcke_h / 1000 * GesAusbr) + (Gesamtzeit * A_Störanteil / Betriebsauftragslos * GesAusbr))
Sonst
A_Leistung = Leistung
Ende Wenn

Mindestgesamtzeit = 5
Mindestlos = (Blöcke_h * Blockgewicht) / 1000 * (Mindestgesamtzeit - Rüstzeit / 100) / (1 + A_Störanteil + B_Störzeit) * GesAusbr

Leistung = 0
Wenn Gesamtzeit < Mindestgesamtzeit Dann
Mindermengenaufschlag = 1 - Gesamtzeit / Mindestgesamtzeit
Sonst
Mindermengenaufschlag = 0
Ende Wenn

Mit DialogblattListe("Dialog WL")
.BezeichnungsfeldListe("Bezeichnung 80").Text = Format(Metergewicht; "#.##0,00")
.BezeichnungsfeldListe("Bezeichnung 62").Text = Format(Betriebsauftragslos; "#.##0")
.BezeichnungsfeldListe("Bezeichnung 65").Text = Format(Blockgewicht; "0")
.BezeichnungsfeldListe("Bezeichnung 69").Text = Format(B_Störzeit; "#.##0 %")
.BezeichnungsfeldListe("Bezeichnung 70").Text = Format(Gesamtzeit; "#.##0,0 h")
.BezeichnungsfeldListe("Bezeichnung 71").Text = Format(Mindestgesamtzeit; "#.##0,0 h")
.BezeichnungsfeldListe("Bezeichnung 72").Text = Format(Mindestlos; "#.##0")
.BezeichnungsfeldListe("Bezeichnung 73").Text = Format(Mindermengenaufschlag; "#.##0 %")
.BezeichnungsfeldListe("Bezeichnung 74").Text = Format(A_Leistung; "0,00")
Ende Mit

Ende Sub


Auf englisch:

Sub berechnen_walzleistung()

Set Kopfbereich = Sheets("Kopf").Cells(1, 1).CurrentRegion
DefinierenPosition = ActiveDialog.DropDowns("Angebote").ListIndex
ZeilenNr = DefinierenPosition + 1

With DialogSheets("Dialog WL")
.Labels("Bezeichnung 80").Text = Format(Kopfbereich.Cells(ZeilenNr, 10), "#.##0,00 kg/m")
End With

Entfall = Value(DialogSheets("Dialog WL").Labels("Bezeichnung 58").Text) / 100
Ausbringen = Value(DialogSheets("Dialog WL").Labels("Bezeichnung 59").Text) / 100
Einsatzlos = Value(DialogSheets("Dialog WL").Labels("Bezeichnung 61").Text)
GesAusbr = Ausbringen - Entfall
Walzaderlänge = Value(DialogSheets("Dialog WL").Labels("Bezeichnung 64").Text)
Blöcke_h = Value(DialogSheets("Dialog WL").Labels("Bezeichnung 66").Text)
Rüstzeit = Value(DialogSheets("Dialog WL").Labels("Bezeichnung 67").Text)
A_Störanteil = Value(DialogSheets("Dialog WL").Labels("Bezeichnung 68").Text) / 100
Metergewicht = Kopfbereich.Cells(ZeilenNr, 10)
Leistung = Value(DialogSheets("Dialog WL").EditBoxes("BF 41").Text)
Betriebsauftragslos = (Ausbringen - Entfall) * Einsatzlos
Blockgewicht = Walzaderlänge * Metergewicht
B_Störzeit = 0.07
Gesamtzeit = (Einsatzlos / GesAusbr) / (Blöcke_h * Blockgewicht / 1000) * (1 + A_Störanteil + B_Störzeit) + Rüstzeit / 10

If Leistung = 0 Then
A_Leistung = 10 * 1 / (1 / (Blockgewicht * Blöcke_h / 1000 * GesAusbr) + (Gesamtzeit * A_Störanteil / Betriebsauftragslos * GesAusbr))
Else
A_Leistung = Leistung
End If

Mindestgesamtzeit = 5
Mindestlos = (Blöcke_h * Blockgewicht) / 1000 * (Mindestgesamtzeit - Rüstzeit / 100) / (1 + A_Störanteil + B_Störzeit) * GesAusbr

Leistung = 0
If Gesamtzeit < Mindestgesamtzeit Then
Mindermengenaufschlag = 1 - Gesamtzeit / Mindestgesamtzeit
Else
Mindermengenaufschlag = 0
End If

With DialogSheets("Dialog WL")
.Labels("Bezeichnung 80").Text = Format(Metergewicht, "#.##0,00")
.Labels("Bezeichnung 62").Text = Format(Betriebsauftragslos, "#.##0")
.Labels("Bezeichnung 65").Text = Format(Blockgewicht, "0")
.Labels("Bezeichnung 69").Text = Format(B_Störzeit, "#.##0 %")
.Labels("Bezeichnung 70").Text = Format(Gesamtzeit, "#.##0,0 h")
.Labels("Bezeichnung 71").Text = Format(Mindestgesamtzeit, "#.##0,0 h")
.Labels("Bezeichnung 72").Text = Format(Mindestlos, "#.##0")
.Labels("Bezeichnung 73").Text = Format(Mindermengenaufschlag, "#.##0 %")
.Labels("Bezeichnung 74").Text = Format(A_Leistung, "0,00")
End With

End Sub


Wie Du siehst, sind nur die Namen ins Englische übersetzt worden, alles andere ist gleich geblieben. Nur die Darstellung in der Dialogmaske ist wie schon beschrieben.

MfG

Volker Ventur

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige