Hallo Gerhard,
danke für Dein Feedback. Dein Hinweis auf den englisch-sprachigen
Eingabe-Anforderungstext bringt "Licht ins "Dunkel":
[1] ORIGINAL - LO [ENG]: Wandelt YYYY-MM-DD (internationales Format) in
MM-DD-YYYY (US Format) um.
Sub ExampleUSDate
Dim sInput As String
Dim sUS_date As String
sInput = InputBox("Please input a date in the international format
YYYY-MM-DD:")
sUS_date = Mid(sInput,6,2)
sUS_date = sUS_date & "/"
sUS_date = sUS_date & Right(sInput,2)
sUS_date = sUS_date & "/"
sUS_date = sUS_date & Left(sInput,4)
MsgBox sUS_date
End Sub
[1.1] Mid(sInput,6,2): Nimm ab dem 6. Zeichen 2 Zeichen => MM
[1.2] Right(sInput,2): Nimm 2 Zeichen von rechts => DD
[1.3] Left(sInput,4): Nimm 4 Zeichen von links: => YYYY
[2] ORIGINAL - LO [DEU]: Erzeugt Quatsch, da die Eingabeaufforderung ein
falsches Datumsformat anfordert:
Sub ExampleUSDate
Dim sInput As String
Dim sUS_date As String
sInput = InputBox("Geben Sie bitte ein Datum im englischen Format
MM-DD-YYYY ein:")
sUS_date = Mid(sInput,6,2)
sUS_date = sUS_date & "/"
sUS_date = sUS_date & Right(sInput,2)
sUS_date = sUS_date & "/"
sUS_date = sUS_date & Left(sInput,4)
MsgBox sUS_date
End Sub
[2.1] Mid(sInput,6,2): Nimm ab dem 6. Zeichen 2 Zeichen => -Y
[2.2] Right(sInput,2): Nimm 2 Zeichen von rechts => YY
[2.3] Left(sInput,4): Nimm 4 Zeichen von links: => MM-D
[3] KORRIGIERT - LO [DEU]: Wandelt YYYY-MM-DD (internationales Format)
in MM/DD/YYYY (US Format) um.
Sub ExampleUSDate
Dim sInput As String
Dim sUS_date As String
sInput = InputBox("Geben Sie bitte ein Datum im internationalen Format
YYYY-MM-DD ein:")
sUS_date = Mid(sInput, 6, 2)
sUS_date = sUS_date & "/"
sUS_date = sUS_date & Right(sInput, 2)
sUS_date = sUS_date & "/"
sUS_date = sUS_date & Left(sInput, 4)
MsgBox sUS_date
End Sub
[3.1] Mid(sInput,6,2): Nimm ab dem 6. Zeichen 2 Zeichen => MM
[3.2] Right(sInput, 2): Nimm 2 Zeichen von rechts => DD
[3.3] Left(sInput, 4): Nimm 4 Zeichen von links: => YYYY
Die einfachste Lösung ist sicherlich, wie von Dir vorgeschlagen, den
deutschen Eingabetext zu korrigieren.
Mein Vorschlag wäre, zusätzlich die "InputBox"-Anzeige um die
Information "YYYY-MM-DD (Datum international) => MM/DD/YYYY (Datum US)"
zu ergänzen, da vielleicht nicht jeder weiß, wie das Format des "USDate"
ausschaut und dann vielleicht irritiert ist, wenn "MM/DD/YYYY"
ausgegeben wird.
[4] Ergänzte "InputBox"-Anzeige
[4.1] VORSCHLAG - LO [ENG]: Wandelt YYYY-MM-DD (internationales Format)
in MM/DD/YYYY (US Format) um.
Sub ExampleUSDate
Dim sInput As String
Dim sUS_date As String
sInput = InputBox("Please input a date in the international format
YYYY-MM-DD:",_
"YYYY-MM-DD (date international) => MM/DD/YYYY (date US)")
sUS_date = Mid(sInput,6,2)
sUS_date = sUS_date & "/"
sUS_date = sUS_date & Right(sInput,2)
sUS_date = sUS_date & "/"
sUS_date = sUS_date & Left(sInput,4)
MsgBox sUS_date
End Sub
[4.1] VORSCHLAG - LO [DEU]: Wandelt YYYY-MM-DD (internationales Format)
in MM/DD/YYYY (US Format) um.
Sub ExampleUSDate
Dim sInput As String
Dim sUS_date As String
sInput = InputBox("Geben Sie bitte ein Datum im internationalen Format
YYYY-MM-DD ein:",_
"YYYY-MM-DD (Datum international) => MM/DD/YYYY (Datum US)")
sUS_date = Mid(sInput,6,2)
sUS_date = sUS_date & "/"
sUS_date = sUS_date & Right(sInput,2)
sUS_date = sUS_date & "/"
sUS_date = sUS_date & Left(sInput,4)
MsgBox sUS_date
End Sub
An welche "Liste" man das senden sollte, weiß ich auch nicht -
"BugReport" sicherlich nicht. So hoffe ich auch, das dies von jemandem
mitgelesen wird, der weiß, wer diesbezüglich informiert werden sollte -
oder es vielleicht sogar gleich selbst "in die Wege leitet".
Gruß
Hans-Werner
------ Originalnachricht ------
Von: "Gerhard Weydt" <gerhard.weydt@t-online.de>
An: users@de.libreoffice.org
Gesendet: 17.06.2017 01:46:23
Betreff: Re: [de-users] LO Hilfe - LO Basic - ''Mid ''- Beispiel ''
ExampleUSDate'' fehlerhaft
Hallo Hans-Werner,
da ist die deutsche Hilfe nicht konsistent mit der englischsprachigen
Fassung. Dort steht im Code
"Please input a date in the international format 'YYYY-MM-DD'".
In der deutschen Fassung steht aber eine ganz andere Formatdarstellung:
"Geben Sie bitte ein Datum im englischen Format MM-DD-YYYY ein".
Deine Korrektur am Programm ist wahrscheinlich richtig, auch wenn ich
sie nur oberflächlich angeschaut habe, aber der wahre Fehler liegt eher
in der falschen Formatbeschreibung im deutschen Makro, denn mit dem
Format laut englischsprachigem Makro funktioniert das offenbar (Testen
trotzdem empfehlenswert, ich habe es nämlich nicht probiert). Das
Beispiel ist ja auch nicht schlecht, es ist eine - und dann auch für
Deutschland benötigte - Version der leider häufiger notwendigen
Umwandlungen in nationale Datumsformate aus der - z.B. in Datenbanken
ziemlich universell verwendeten - Darstellung laut der international
normierten Norm (ISO 8601). Die Norm ist ja gerade wegen der lokalen
Schreibweisen für die EDV unumgänglich. (Und bei Überweisungsbelegen
funktioniert sie, das habe ich schon vor Jahren getestet.) Und das
Beispiel enthält ja die gleichen Befehle wie dein korrigiertes
Beispiel, also ist es für ein Beispiel genauso gut.
Meine Empfehlung ist daher: einfach den Text der Inputbox an den
englischen Text anpassen, dadurch ist in der beschriebenen
Funktionalität nichts geändert.
Ich habe momentan nicht parat, an welche Liste man das am besten
schicken sollte, vielleicht liest jemand mit, der das veranlasst.
Gruß
Geerhard
Am 13.06.2017 um 21:10 schrieb OoOHWHOoO:
Hallo,
das Beispiel "ExampleUSDate" für "Mid" soll wohl "MM-DD-YYYY"
umwandeln in "DD/MM/YYY", erzeugt aber "-Y/YY/MM-D".
Gruß
Hans-Werner
[0] LO 5.3.4.1 (x64) @ Windows 7 Home Premium (x64)
[1] Fehlerhaftes (Original-) Makro
Sub ExampleUSDate
Dim sInput As String
Dim sUS_date As String
sInput = InputBox("Geben Sie bitte ein Datum im englischen Format
MM-DD-YYYY ein")
sUS_date = Mid(sInput, 6, 2)
sUS_date = sUS_date & "/"
sUS_date = sUS_date & Right(sInput, 2)
sUS_date = sUS_date & "/"
sUS_date = sUS_date & Left(sInput, 4)
MsgBox sUS_date
End Sub
[2] Korrigiertes Makro
Sub ExampleUSDate_KORRIGIERT
Dim sInput As String
Dim sUS_date As String
sInput = InputBox("Geben Sie bitte ein Datum im englischen Format
MM-DD-YYYY ein")
sUS_date = Mid(sInput, 4, 2)
sUS_date = sUS_date & "/"
sUS_date = sUS_date & Left(sInput, 2)
sUS_date = sUS_date & "/"
sUS_date = sUS_date & Right(sInput, 4)
MsgBox sUS_date
End Sub
-- Liste abmelden mit E-Mail an: users+unsubscribe@de.libreoffice.org
Probleme?
http://de.libreoffice.org/hilfe-kontakt/mailing-listen/abmeldung-liste/
Tipps zu Listenmails: http://wiki.documentfoundation.org/Netiquette/de
Listenarchiv: http://listarchives.libreoffice.org/de/users/
Alle E-Mails an diese Liste werden unlöschbar öffentlich archiviert
--
Liste abmelden mit E-Mail an: users+unsubscribe@de.libreoffice.org
Probleme? http://de.libreoffice.org/hilfe-kontakt/mailing-listen/abmeldung-liste/
Tipps zu Listenmails: http://wiki.documentfoundation.org/Netiquette/de
Listenarchiv: http://listarchives.libreoffice.org/de/users/
Alle E-Mails an diese Liste werden unlöschbar öffentlich archiviert
Context
Privacy Policy |
Impressum (Legal Info) |
Copyright information: Unless otherwise specified, all text and images
on this website are licensed under the
Creative Commons Attribution-Share Alike 3.0 License.
This does not include the source code of LibreOffice, which is
licensed under the Mozilla Public License (
MPLv2).
"LibreOffice" and "The Document Foundation" are
registered trademarks of their corresponding registered owners or are
in actual use as trademarks in one or more countries. Their respective
logos and icons are also subject to international copyright laws. Use
thereof is explained in our
trademark policy.