Unterschd.zwi.ExcelForml.TexT&VBAWorksht.func.Text

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
MsgBox
Bild

Betrifft: Unterschd.zwi.ExcelForml.TexT&VBAWorksht.func.Text
von: ExtremeExceling
Geschrieben am: 12.10.2015 18:59:29

Scheinbar gibt es Utnerschied zwischen der Excel Funktion Text()
und der WorksheetFunction.Text(Now(), "TT.MM.JJJJ hh:mm:ss") in VBA
Ziel eine Funktion in VBA die Einfach das Aktuelle oder ein Datumswert wie es die Excel-Formel:
=TEXT(JETZT(); "TT.MM.JJJJ hh:mm:ss")
dastellen würde, gemäß der eingestellten Formatierung dastellt
Hat jemand eine einfache Idee????
ich freue mich auf Eure Antworten , insbesondere über VBA Beispiele :-)
Hier ein kleines VBA beispiel.

Public Function aktuelleUhrzeitTest() As String
    Dim ergebnis As String
    
    On Error Resume Next
    ergebnis = Now() & vbCrLf 'bringt nicht das Gewünschte ergebnis
    ergebnis = ergebnis & ("= Now()" & vbTab & ergebnis) & vbCrLf & vbCrLf
    
    'so sollte es eigentlich aussehen
    'Da nimmt VBA entweder nur Datum oder nur Uhrzeit
    ergebnis = ergebnis & WorksheetFunction.Text(Now(), "TT.MM.JJJJ hh:mm:ss") & vbCrLf
    ergebnis = ergebnis & (" WorksheetFunction.Text(Now(), ""TT.MM.JJJJ hh:mm:ss"")" & vbTab &   _
_
ergebnis) & vbCrLf & vbCrLf
    
    'das mischt VBA die ausgabe der Uhrzeit mit der Formatierungseinstellung, und gibt somit  _
auch nicht das gewünschte Ergebnis zurück
   ergebnis = ergebnis & Format(Now(), "TT.MM.JJJJ hh:mm:ss") & vbCrLf
    ergebnis = ergebnis & ("=Format(Now(), ""TT.MM.JJJJ hh:mm:ss"")" & vbTab & ergebnis)
    
    aktuelleUhrzeitTest = ergebnis
End Function

Public Function aktuelleUhrzeit()
'So sollte die Funktion eigentlich aussehen
    
    aktuelleUhrzeit = WorksheetFunction.Text(Now(), "TT.MM.JJJJ hh:mm:ss")
    
End Function

Sub macheEtwas()
    MsgBox (aktuelleUhrzeitTest)
    
    'zum vergleich so arbeitet die Funktion Text in Excel, man sieht hier das die Methode mit  _
der Formel arbeitet
    'oder dierekt mit dem Format des Zellwertes
    
    Range("A3").FormulaR1C1 = "=TEXT(NOW(), ""TT.MM.JJJJ hh:mm:ss"")"
    
    MsgBox ("Der Wert aus der Excel zelle A3: " & Range("A3").Value)
End Sub

Bild

Betrifft: AW: Unterschd.zwi.ExcelForml.TexT&VBAWorksht.func.Text
von: Hajo_Zi
Geschrieben am: 12.10.2015 19:09:33
Du schreibst Text in die Zelle, das ist die Zellformatierung Egal.


Bild

Betrifft: AW: Unterschd.zwi.ExcelForml.TexT&VBAWorksht.func.Text
von: ExtremeExceling
Geschrieben am: 12.10.2015 19:49:51
ich hatte das auch gesehen, aber in Bezug was ich genau dagestellt hatte, da hast Du natürlich Recht :-) Danke.
Grüße

Bild

Betrifft: AW: Unterschd.zwi.ExcelForml.TexT&VBAWorksht.func.Text
von: fcs
Geschrieben am: 12.10.2015 19:16:52
Hallo ExtremeExceling,
Excel-VBA spricht/versteht Englisch, und die Verbindung zur Einstellung im Betriebssystem funktioniert mehr oder weniger gut.
Des wegen müssen in VBA bei den Formaten die US-Kennbuchstaben, Dezimalkennzeichen und 1000er-Trennzeichen verwendet werden.
Gruß
Franz

Sub TestTime_1()
    Dim ergebnis As String
    
    ergebnis = Now()
    MsgBox ergebnis 'verwendet automatisch Einsstellung des Betriebssystems
    
    
End Sub
Sub TestTime_2()
    Dim ergebnis As String
    
    ergebnis = Format(Now(), "DD.MM.YYYY hh:mm:ss") 'VBA-Funktion
    MsgBox ergebnis
    
    
End Sub
Sub TestTime_3()
    Dim ergebnis As String
    
    ergebnis = Application.WorksheetFunction.Text(Now(), "DD.MM.YYYY hh:mm:ss") ' _
Tabellenblattfunktion
    MsgBox ergebnis
    
    
End Sub


Bild

Betrifft: AW: Unterschd.zwi.ExcelForml.TexT&VBAWorksht.func.Text
von: ExtremeExceling
Geschrieben am: 12.10.2015 19:39:42
DANKE
Ok jetzt hab ichs kapiert :-)
mein Fehler war die Deutsche Schreibweise des Tages und Jahres
"TT.MM.JJJJ hh:mm:ss"
Ihre/Deine Antwort war die richtige
"DD.MM.YYYY hh:mm:ss"
Anmerkung:
Der name ExtremeExceling ist abgeleitet von Agilen Vorgehensmodell dem programmierung mit ExtremeProgrammig.
Eines der Hauptmerkmale von dem ExtremeProgramming ist. Das 2. Programmierer an einem Arbeitsplatz sitzten. Wobei der unerfahrenere an der Tatatur sitzt.damit dieser schneller lernt :-)
4 Augen sehen mehr als 2 normalerweise :-)
Naja wir hatte in dem einen Fach als es um Excel ging gefragt ob man das auch bei der prüfung anwenden kann. Dann hatte der Dozent scherzhalber gefragt ihr mein Extreme Exceling in der Prüfung :-)

Bild

Betrifft: Die einfachste Variante wäre es wohl, ...
von: Luc:-?
Geschrieben am: 12.10.2015 20:38:47
ExtremeExcelling,
in A1 =JETZT() (Zelle entsprechend formatiert!) und in eine andere Zelle dann =GetText(A1) zu schreiben. Die UDF GetText könnte dann so aussehen:
Function GetText(Bezug As Range): GetText = Bezug.Text: End Function

Mit der folgenden EreignisProzedur kannst du gewisse Unterschiede feststellen:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    MsgBox "OrFmt: " & vbTab & Target.NumberFormat & vbLf & _
           "LoFmt: " & vbTab & Target.NumberFormatLocal & vbLf & _
           "TxWrt: " & vbTab & WorksheetFunction.Text(Target, "general") & vbLf & _
           "DZTxt: " & vbTab & WorksheetFunction.Text(Target, "[$-407]dd.mmm yyyy, hh:mm:ss")
End Sub
Gruß, Luc :-?

Besser informiert mit …

 Bild

Beiträge aus den Excel-Beispielen zum Thema "shape deaktivieren"