Visual Basic Problem

Informationen und Beispiele zu den hier genannten Dialog-Elementen:


Excel-Version: 8.0 (Office 97)
nach unten

Betrifft: Visual Basic Problem
von: Volker Ventur
Geschrieben am: 24.06.2002 - 11:33:09

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

nach oben   nach unten

Deuetsche vs. englische Formate
von: Martin Beck
Geschrieben am: 24.06.2002 - 13:00:16

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


nach oben   nach unten

Re: Deuetsche vs. englische Formate
von: Volker Ventur
Geschrieben am: 24.06.2002 - 13:11:38

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

nach oben   nach unten

Re: Deutsche vs. englische Formate
von: Martin Beck
Geschrieben am: 24.06.2002 - 13:18:37

Hallo Volker,

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

Gruß
Martin Beck


nach oben   nach unten

Re: Deutsche vs. englische Formate
von: Volker Ventur
Geschrieben am: 24.06.2002 - 13:43:17

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

 nach oben

Beiträge aus den Excel-Beispielen zum Thema "Visual Basic Problem"