Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1236to1240
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

NetSend Chatprogramm - Textbox & vbCrLf Problem

NetSend Chatprogramm - Textbox & vbCrLf Problem
Rene
Hallo liebe VBA Gemeinde!
Ich habe seit langem mal wieder ein VBA Programm geschrieben.
Es handelt sich um ein Net Send Chat Programm mit dem man Nachrichten an eine fixe Anzahl von Usern verschicken kann und das im 1sec Intervall die erhaltenen Nachrichten ausliest und in eine TextBox einträgt.
Genau da setzt mein Problem an.
Das eintragen neuer Nachrichten in die TextBox mit Zeilenumbruch (vbNewLine, vbCrLf) etc. funktioniert soweit ganz gut aber da dann neue Nachrichten immer am Ende der TextBox stehen und ich noch keine Funktionen kenne/gefunden habe die z.B. immer dafür sorgt dass die TextBox automatisch ans Ende scrollt, hab ich einen Vorschlag eines anderen InternetUsers (beim googlen darüber gestoßen) aufgefangen und versucht die neuen Nachrichten immer am Anfang der TextBox einzutragen.
In einem Testprogramm funktioniert dies auch problemlos, nur bei mir mit meinem Timer gibt es anscheinend ein Problem das ich aber nicht erkenne.
Hier mal der Code des Timer Moduls:
Dim VerGleich As String
Dim iTimerSet As Double
Public Sub Auslesen()
Dim sText As String
iTimerSet = Now + TimeValue("00:00:01")
Application.OnTime iTimerSet, "Auslesen"
sText = mdlFunctionLesen.NDLesen()
If Len(sText) > 0 Then
If VerGleich = sText Then
Else
frmNetSend.txtAusgabe.Text = sText & vbCrLf & frmNetSend.txtAusgabe.Text
VerGleich = sText
End If
End If
End Sub

Public Sub ZeitAbschalten()
Application.OnTime iTimerSet, "Auslesen", , False
End Sub

Warum funktioniert
frmNetSend.txtAusgabe.Text = frmNetSend.txtAusgabe.Text & vbCrLf & sText
problemlos aber
frmNetSend.txtAusgabe.Text = sText & vbCrLf & frmNetSend.txtAusgabe.Text
nicht?
Er überschreibt immer die komplette TextBox mit dem zuletzt empfangenen Text.
Vielen Dank für eure Hilfe!
lg
Rene

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: NetSend Chatprogramm - Textbox & vbCrLf Problem
09.11.2011 12:53:11
Heiko
Moin Rene,
also ich kann keinen Unterschied zwischen den beiden Versionen (vorn oder hinten anstellen) feststellen.
Ich habe aber auch deine Zeile
sText = mdlFunctionLesen.NDLesen()
Durch diese ersetzt, da ich die Funktion nicht habe.
sText = "Neuer Text " & CStr(Now())
Also bei mir mit einem offenen Userform darauf eine Textbox und ein allgemeines Modul mit dem Code den du hier gepostet hast, läuft (XP und Ofiice 2007) problemlos.
Da ich den Code hierhinter mdlFunctionLesen.NDLesen() nicht kenne kann nicht mehr sagen.
Wird die Funktion vielleicht auch sekündlich aufgerufen und die Funktionen stören sich gegenseitig ?!
Gruß Heiko
Anzeige
AW: NetSend Chatprogramm - Textbox & vbCrLf Problem
09.11.2011 14:47:29
Rene
Hi Heiko!
Ja wenn ich ein simples Testprogramm mache das statisch also ohne sekündliche Abfrage läuft, dann funktionierts auch.
Ich poste ungern den ganzen Programmcode aber der Rest ist eig. eh simples Zeug, Design und API deklarieren etc.
Hier die mdlFunctionLesen (Programm is noch net fertig daher entschuldigung für die unordnung ^^):
Public Function NDLesen() As String
Dim sWindowText As String
Dim nLen As Long
Dim wndRoot As Long
Dim wndSub As Long
Dim pos1 As Long
Dim pos2 As Long
' Fenster mit Caption "Nachrichtendienst" suchen
wndRoot = FindWindow(0&, "Nachrichtendienst ")
If wndRoot  0 Then
' untergeordnetes Control ermitteln
wndSub = FindWindowEx(wndRoot, 0, "static", vbNullString)
sWindowText = Space$(1000)
' Fenstertext des Controls ermitteln
nLen = GetWindowText(wndSub, sWindowText, Len(sWindowText))
' ermitteln Ende der Überschrift (Uhrzeit)
pos1 = InStr(sWindowText, ":")
pos2 = InStr(pos1 + 1, sWindowText, ":")
If InStr(1, sWindowText, "xxx") Then
NDLesen = "YYY schreibt: " + Mid$(sWindowText, 59)
ElseIf InStr(1, sWindowText, "vvv") Then
NDLesen = "AAA schreibt: " + Mid$(sWindowText, 59)
... etc
Else
NDLesen = "Anonymous schreibt: " + Mid$(sWindowText, 59)
End If
End If
End Function

Nur seh ich irgendwie keinen Zusammenhang warum es in der Textbox hinten angestellt problemlos geht, egal wieviele Nachrichten, auch der Vergleich ob es die gleiche Nachricht ist funktioniert problemlos aber davorgestellt geht es nicht. Wenn beide Versionen den gleichen Fehler erzeugen würden, dann wärs klar, aber so herum versteh ich es irgendwie nicht oO Multiline is übrigens aktiviert ^^
Hab mir schon gedacht dass der Intervall von 1sec zu schnell ist aber Fehlanzeige.
Hier läuft übrigens auch XP und Office2003. Auf einem anderen System hab ich es noch nicht testen können.
lg
René
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige
Archiv - Verwandte Themen
Forumthread
Beiträge