vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Top-Preis! AP-Access-Tools-CD Volume 1  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Fortgeschrittene
TextBox 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.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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 ...
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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 !
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: TextBox Text nach Zelle Excel als Zeitangabe 
Autor: Tweety2016
Datum: 08.04.19 11:23

Danke Manfred, das funktioniert jetzt.

Viele Grüße !!
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel