| |
VB.NET - FortgeschritteneTextBox Text nach Zelle Excel als Zeitangabe | | | Autor: Tweety2016 | Datum: 04.04.19 15:10 |
| Hallo zusammen,
mit der Zeile: xlsApp.ActiveCell.Value = TextBox1.Text übertrage ich den Inhalt meiner TextBox in die aktive Zelle im Excel.
Der Inhalt der TextBox ist immer eine Zeitangabe im Format hh:mm:ss, 00. So ist auch die Zelle im Excel formatiert.
Die Werte werden auch so übertragen, nur kann ich trotz passender Formatierung in Excel keine Summen der ZEiten bilden. Dazu muss ich die Zelle klicken, das Komma entfernen und neu setzen. Nach Enter wird dann die Summe gebildet.
Muss ich den Inhalt der TextBox for dem Übertrag extra nochmal formatieren.
In welcher Weise? Woran liegt es, dass das Komma aus der TextBox nicht von Excel erkannt wird?
Danke. | |
Re: TextBox Text nach Zelle Excel als Zeitangabe | | | Autor: Manfred X | Datum: 04.04.19 15:30 |
| Hallo!
Probiere aus, ob es klappt, wenn Du den Inhalt
der Textbox.Text-Eigenschaft in den DateTime-Typ
konvertierst, bevor Du eine Zuweisung durchführst
(CDate-Methode).
Weitere Details:
https://docs.microsoft.com/en-us/visualstudio/vsto/how-to-programmatically-store-and-retrieve-date-values-in-excel-ranges?view=vs-2019
Beitrag wurde zuletzt am 04.04.19 um 15:37:01 editiert. | |
Re: TextBox Text nach Zelle Excel als Zeitangabe | | | Autor: Tweety2016 | Datum: 04.04.19 19:00 |
| Hallo Manfred,
ich habe jetzt folgendes ergänzt:
myText = TextBox1.Text
Dim aTime As Date
aTime = CDate(myText)
xlsApp.ActiveCell.Value = aTime
myText ist z.B. 00:00:03,26 was soweit passt und wird aber durch Convertierung CDate zu #1/1/0001 12:00:00#.
Damit komme ich nciht weiter, vor allem, weil das Datum jetzt hinzukommt ( abgesehen davon, dass das Datum nicht passt ).
Es ist als würde Excel ein anderes Komma benutzen, als ich in myText erhalte.
Hast du noch eine Idee vielleicht?
Danke. | |
Re: TextBox Text nach Zelle Excel als Zeitangabe | | | Autor: Tweety2016 | Datum: 04.04.19 19:22 |
| P.S. durch Konvertierung:
Dim ts As TimeSpan = Stoppuhr.Elapsed
TextBox1.Text = String.Format("{0:00}:{1:00}:{2:00},{3:00}", ts.Hours, ts.Minutes, ts.Seconds, ts.Milliseconds / 10)
wird es nicht besser; ich muss trotzdem in Excel das Komma löschen und wieder einfügen, damit mit der Zahl eine Summe gebildet werden kann.
Bin gerade ratlos ... | |
Re: TextBox Text nach Zelle Excel als Zeitangabe | | | Autor: Manfred X | Datum: 05.04.19 09:05 |
| Hallo!
Du willst keine Uhrzeit bzw. Zeitangabe an Excel übergeben,
sondern eine Zeitspanne. Deswegen bekommst Du bei Verwendung
von CDATE eine Ausnahme. Diese Methode bezieht sich auf einen
Zeitpunkt.
Rechne das Zeitintervall in einen Double-Wert um (z.B.
Anzahl Sekunden, Millisekunden). Das weitere hängt davon ab,
wie die Zelle in Excel eingerichtet ist. | |
Re: TextBox Text nach Zelle Excel als Zeitangabe | | | Autor: Tweety2016 | Datum: 05.04.19 09:10 |
| Hi,
und wie schreibe ich das dann?
Die Zelle in Excel ist passend formatiert: unter Benutzerdefiniert [h]:00:00,00
Danke. | |
Re: TextBox Text nach Zelle Excel als Zeitangabe | | | Autor: Manfred X | Datum: 05.04.19 10:28 |
| Ich verwende Excel nicht. Ich habe mal kurz reingeschaut.
Deine Angabe ist eine Formatbezeichnung für die Anzeige,
nicht die tatsächliche interne Darstellung des "Value"
in der Zelle.
Soweit ich beurteilen kann, muß als "value": Anzahl Tage,Teiltag
als Typ Double eingetragen werden: 0,1 -> 2Std 24 Min
Dim v As Double = h / 24 + min / 1440 + sec / 86400
Da Du mit Genauigkeit von Millisekunden zu arbeiten scheinst,
würde ich eine andere Darstellungsform benutzen.
Beitrag wurde zuletzt am 05.04.19 um 10:32:22 editiert. | |
Re: TextBox Text nach Zelle Excel als Zeitangabe | | | Autor: Tweety2016 | Datum: 05.04.19 12:25 |
| Hi,
Danke.
Ich habe herausgefunden, dass das Problem verschwindet, wenn man die Zelle doppelklickt. Sofort funktioniert die Summenbildung.
Ich habe es manuell mit F2 aktivieren können.
Wie schreibe ich das in vb.NET?
Ich habe es versucht mit: xlsApp.SendKeys("{F2}"),
da passiert aber nichts.
Danke schön. | |
Re: TextBox Text nach Zelle Excel als Zeitangabe | | | Autor: Manfred X | Datum: 05.04.19 13:58 |
| Durch ein Enter oder einen ähnlichen Click
sorgst Du dafür, daß der formatiert angezeigte String
in die korrekte interne Darstellung des Wertes
überführt und gespeichert wird. Das ist alles.
Du mußt dafür sorgen, im VB-Code den passenden Wert
in die Zelle einzutragen ! | |
Re: TextBox Text nach Zelle Excel als Zeitangabe | | | Autor: Tweety2016 | Datum: 05.04.19 15:42 |
| Der Wert wird richtig formatiert eingetragen.
Wenn ich hinterher in einer MsgBox den Zellenwert auslese, kommt der Wert raus.
Was ich jetzt noch brauche ist der Befehl für SendKey F2, der im vb.NET funktioniert.
Meine Codezeile funktioniert nciht.
Weißt du, was ich ändern muss?
Danke. | |
Re: TextBox Text nach Zelle Excel als Zeitangabe | | | Autor: effeff | Datum: 05.04.19 16:46 |
| Funktioniert es ggf., wenn Du ein
Application.Calculate machst?
EALA FREYA FRESENA | |
Re: TextBox Text nach Zelle Excel als Zeitangabe | | | Autor: Tweety2016 | Datum: 05.04.19 16:58 |
| Leider nein, effeff.
Ich habe zwischenzeitlich das hier versucht:
Public Declare Sub mouse_event Lib "user32" Alias "mouse_event" (ByVal dwFlags As Long, ByVal dx As Long, ByVal dy As Long, ByVal cButtons As Long, ByVal dwExtraInfo As Long)
Public Const MOUSEEVENTF_LEFTDOWN = &H2
Public Const MOUSEEVENTF_LEFTUP = &H4
Public Sub SimulateClick()
mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0)
mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0)
End Sub
Und habe nach dem Einfügen in Excel die Sub SimulateClick() aufgerufen.
Da bekomme ich aber einen Fehler gleich in der ersten Zeile der Sub. | |
Re: TextBox Text nach Zelle Excel als Zeitangabe | | | Autor: Manfred X | Datum: 05.04.19 23:15 |
| Du könntest die Eingabe so umwandeln, wie ich es
oben gezeigt habe ....
Du mußt die Longwerte beim DECLARE
in VB.Net als Integer deklarieren. | |
Re: TextBox Text nach Zelle Excel als Zeitangabe | | | Autor: Tweety2016 | Datum: 06.04.19 16:37 |
| Hallo Manfred,
ich bekomme deinen Vorschlag als Code nicht hin, leider.
Hätte ich sonst gerne ausprobiert. | |
Re: TextBox Text nach Zelle Excel als Zeitangabe | | | Autor: Manfred X | Datum: 06.04.19 19:03 |
| Angenommen Du hast eine Eingabe des Benutzers in der Textbox
als Zeitintervall (String):
12 Stunden, 30 Minuten, 15 Sekunden, 720 Millisekunden
Dim userinput As String = "12:30:15,72"
'String in drei Teile zerlegen
Dim parts() As String = userinput.Split(":"c)
'Teile in Zahlen umwandeln
Dim hours As Integer = CInt(parts(0))
Dim minutes As Integer = CInt(parts(1))
Dim seconds As Double = CDbl(parts(2))
'Aus den Zahlen den Excel-Wert berechnen
Dim vl As Double = hours / 24 + minutes / 1440 + seconds / 86400
'vl = 0.52101527777777779 etwas mehr als ein halber Tag Den Wert in der Variable vl solltest Du auf eine Excel-Zelle zuweisen
können, die entsprechend formatiert korrekt angezeigt wird.
Beitrag wurde zuletzt am 06.04.19 um 19:04:19 editiert. | |
Re: TextBox Text nach Zelle Excel als Zeitangabe | | | Autor: HenryV | Datum: 08.04.19 10:12 |
| Hallo Tweety2016
Ich glaube eher, dass es am Komma selbst liegt. In den Programmiersprachen wird generell der Punkt als Dezimaltrennzeichen verwendet.
Versuche einmal:
Dim userinput As String = "12:30:15,72"
Dim t As TimeSpan = TimeSpan.Parse(userinput)
xlsApp.ActiveCell.Value = t.ToString Gruss HenryV | |
Re: TextBox Text nach Zelle Excel als Zeitangabe | | | Autor: Manfred X | Datum: 08.04.19 10:25 |
| Hallo!
Nein. Excel benötigt einen Zahlenwert und keinen String,
wenn Berechnungen durchgeführt werden sollen.
Mit der Komma-Darstellung hat das geschilderte Problem
nichts zu tun. | |
Re: TextBox Text nach Zelle Excel als Zeitangabe | | | Autor: Tweety2016 | Datum: 08.04.19 11:23 |
| Danke Manfred, das funktioniert jetzt.
Viele Grüße !! | |
| Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
|
|
sevISDN 1.0
Überwachung aller eingehender Anrufe!
Die DLL erkennt alle über die CAPI-Schnittstelle eingehenden Anrufe und teilt Ihnen sogar mit, aus welchem Ortsbereich der Anruf stammt. Weitere Highlights: Online-Rufident, Erkennung der Anrufbehandlung u.v.m. Weitere InfosTipp des Monats März 2024 Dieter OtterUTF-8 Konvertierung von Dateien und StringsVB6 selbst verfügt über keine Funktionen zur UTF-8 Konvertierung von Daten. Mit Hilfe des ADODB.Stream-Objekts lassen sich diese fehlenden Funktionen aber schnell nachrüsten. TOP! Unser Nr. 1
Neu! sevDataGrid 3.0
Mehrspaltige Listen, mit oder ohne DB-Anbindung. Autom. Sortierung, Editieren von Spalteninhalten oder das interaktive Hinzufügen von Datenzeilen sind ebenso möglich wie das Erstellen eines Web-Reports. Weitere Infos
|