Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Daten aus Listbox in Textbox,dort Anzeigen und ändern, anschließend zurückschreiben i
#41
Hallöchen,

erst mal ein allgemeiner Hinweis.
Wenn Du von außerhalb eines Userforms auf Objekte des Userforms zugreifen willst, musst Du es auch benennen. Also z.B.

Userform1.Textbox137....
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#42
Hi Andre,

danke für diesen Tipp, meine Schreibassistenz hat sich bald in die Tonne geworfen vor lachen.
Auf das einfachste kommt man leider nicht immer als erstes. Da hätte ich mir jede Menge
zuhören bei der Sprachausgabe schenken können..
Aber wäre wohl der erste vernünftige Gedankengang gewesen.
Wenn ich abends in einem Pup sitze bei einem gemütlichen Guinness, zur Zigarette  nach draußen 
gehe, dann kommt das Guinnes ja auch nicht mit der Kellnerin ohne das ich sage wo
ich bin.

:19: :19: :19: :19:

also Danke es hat gefunzt.

Aber bevor ich jetzt wieder erst viele Tage verschwende frage ich besser direkt.

Bei Excel kann man einstellen, dass es einem nach Eingabe in einer Zelle auf dem Tabellenblatt diese
Eingabe nach verlassen der Zelle vorließt.
Ist es möglich einem auch die Eingaben auf der UserForm in den TextBoxen vorlesen zu lassen - VBA?

Gruß

Jürgen
Antworten Top
#43
Hallo Jürgen,

ob es da eine Einstellung gibt weiß ich nicht. Eine Lösung wäre z.B. eine entsprechende Funktion. Ich ruf die hier aus dem Sub auf, Du könntest Die z.B. beim Verlassen der TextBox oder bei einem ENTER oder einem "Vorlesebutton" ausführen.

Code:
Private Function Vorlesen(strText As String)
    Dim objSpeaker As Object
    Set objSpeaker = CreateObject("SAPI.SpVoice")
    objSpeaker.Volume = 100
    objSpeaker.Speak strText
    Set objSpeaker = Nothing
End Function
    
Sub Test()
Call Vorlesen("H?rst Du mich?")
End Sub
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#44
Hi Andre

werden das morgen gleich mal einbauen und probieren

Gruß

Jürgen
Antworten Top
#45
Hi Andre,

leider haben wir Deinen Code so nicht zum laufen bekommen. Sprich er hat immer einen Object Fehler gebracht.

Nach langem hin und her haben wir etwas gestrickt:

In der Userform werden bei den Textboxen einmal beim "Enter" und einmal beim "Exit" die Sprachausgabe gestartet.
Warum bei beiden? Einmal beim Betreten der Textbox, dass man weis ob etwas drin steht. Beim verlassen Sprachausgabe nur wenn etwas geändert wurde.

z.B.: Code für eine TextBox

Code:
Option Explicit

Dim txt As String

' Code Userform1: für die Sprachausgabe

Sub Sprachausgabe()
   Dim sayIt As Object
   Dim myText As String
   If ToggleButton1.Value = False Then
       Set sayIt = CreateObject("SAPI.SpVoice")
       myText = txt
       sayIt.Speak myText
   Else
       Exit Sub
   End If
End Sub

'Code für die TextBox bei Enter und bei Exit

Private Sub TextBox102_Enter()
   txt = TextBox102.Value
   Call Sprachausgabe
End Sub

Private Sub TextBox102_Exit(ByVal Cancel As MSForms.ReturnBoolean)
   If txt <> TextBox102 Then
       txt = TextBox102.Value
       Call Sprachausgabe
       Call Ausgang
   Else
       Call Ausgang
   End If
End Sub

Du wirst lachen, das funzt sogar  Blush

Nur mit der Sprachausgabe bei MouseMove sind wir Ratlos.

Bekommen es nicht gelöst, dass wenn man eine Textbox, CommandButton, Listbox mit der Mouse überfähr, dass die Sprachausgabe nur ein mal erfolgt,
bzw. dass die Sprachausgabe sich beim Bewegen der Mause innerhalb der TextBox, Command........ nicht ständig wiederholt.

Code Für MouseMove:

Code:
Private Sub CommandButton6_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
   Dim spz As Integer
   spz = 1
   Do While spz = 1
   txt = CommandButton6.Caption
   Call Sprachausgabe
   spz = spz + 1
   Loop
   Exit Sub
End Sub

Hast Du eine Lösung?

Gruß

Jürgen
Antworten Top
#46
Hallo Jürgen,

das Bewegen der Maus erzeugt ggf. mehrere MouseMove - Ereignisse. Du kannst z.B. mal dieses Makro für einen CommandButton nehmen, mit der Maus darüber ziehen und schauen, wie oft Dir die Zeile MouseMove_cmd_1 im Direktfenster ausgegeben wird.

Code:
Private Sub CommandButton1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
Debug.Print "MouseMove_cmd_1"
End Sub

Vermeiden kannst Du das z.B. mit einer Variable, die die weitere Ausführung des Makro ggf. verhindert. Du müsstest nur schauen, wann Du die Variable wieder zurücksetzt. Wäre z.B. sinnoll, wenn Du bei der Mausbewegung von dem Cmd-Button runterkommst - da könnte vielleicht das UserForm_MouseMove wirken.

Code:
Option Explicit

Dim boMove As Boolean
Private Sub CommandButton1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
If boMove Then Exit Sub
boMove = True
Debug.Print "MouseMove_cmd_1"
End Sub
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#47
Hallo Leute,

Excel kann von sich aus sprechen ... das ganze herumgehacke mit der SAPI kann man sich schenken. In 2003 war da ein Bug drin, aber ab 2007 geht das schon wieder.

Application.Speech.Speak "Hallo Leute !!!", True

Es wird dabei immer die im System eingestellte Stimme verwendet.

Zitat:Bekommen es nicht gelöst, dass wenn man eine Textbox, CommandButton, Listbox mit der Mouse überfähr, dass die Sprachausgabe nur ein mal erfolgt,

hab dir das mal exemplarisch für eine TextBox auf der Userform gemacht. Um gleichzeitig mehrere TextBoxen anzusprechen, ohne für jede einzelne Code zu schreiben ... aber die Objekt-Klasse kennst du ja schon.

Code:
Option Explicit

Private bolSpeak As Boolean

Private Sub TextBox1_Change()
bolSpeak = False
End Sub

Private Sub TextBox1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
If bolSpeak = False Then
   If TextBox1.Text <> "" Then
       Application.Speech.Speak TextBox1.Text, True
   Else
       Application.Speech.Speak "TextBox ist leer", True
   End If
   bolSpeak = True
End If
End Sub

Private Sub UserForm_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
bolSpeak = False
End Sub
VG Sabina

bei mir läuft Win 7 32-Bit - Office 2010 Pro Plus 32-Bit und Office 2016 Pro Plus 32-Bit
Wer auch weiter Hilfe erwartet, sollte sich nicht zu schade sein, ein kurzes Feedback zu geben.
Antworten Top
#48
Hallo Sabina

Hallo Andre

vielen Dank für Eure Unterstützung.

Das Excel sprechen kann wussten wir ja, nur das in eine Userform zu bringen war ein Probs, dass wir Dank Andre in den Grundzügen mit seinem
Code realisieren konnten. Dank Sabina ist das ganze einfacher geworden.

Haben das jetzt wie folgt gelöst:

Code:
Option Explicit

Dim objTB1() As New clsTB1
Dim objTB2() As New clsTB2
Dim objTB3() As New clsTB3
Dim txt As String  '------------------------ Um diese Zeilen ergänzt
Dim objCtrlA As MSForms.Control '----------- Um diese Zeilen ergänzt
Private bolSpeak As Boolean


'----- Name der Textbox ermitteln auch innerhalb von Frames------------------------------------------------------------------

Function GetActiveControl(ByRef objCtrl As MSForms.Control) _
     As MSForms.Control
 If Not objCtrl Is Nothing Then
   Select Case True
     Case TypeOf objCtrl Is MSForms.MultiPage
       Set objCtrl = objCtrl.SelectedItem.ActiveControl
       Set objCtrl = GetActiveControl(objCtrl)

     Case TypeOf objCtrl Is MSForms.Frame
       Set objCtrl = objCtrl.ActiveControl
       Set objCtrl = GetActiveControl(objCtrl)

     Case Else
   End Select
 End If
 Set GetActiveControl = objCtrl
End Function

'------- Ende der Namensermittlung ---------------------------------------

'------- Sprachausgabe ---------------------------------------------------

Private Sub Sprechen()
Set objCtrlA = GetActiveControl(Me.ActiveControl)
   If Not objCtrlA Is Nothing Then
       If bolSpeak = False Then
           If objCtrlA.Text <> "" Then
               Application.Speech.Speak objCtrlA.ControlTipText & objCtrlA.Text, True
           Else
               Application.Speech.Speak "TextBox ist leer", True
           End If
           bolSpeak = True

       End If
   Else
       Exit Sub
   End If
End Sub

'-------- Ende Sprachausgabe ---------------------------------------------

'-------- Sprachausgabe bei Exit -----------------------------------------

Private Sub SprechenExit()
    If txt <> objCtrlA Then
        txt = objCtrlA.Value
        Call Sprechen
        Call Ausgang
    Else
        Call Ausgang
    End If
End Sub

'-------- Bei jeder TextBox bei "MouseMove" oder Enter oder Exit ----------

Private Sub TextBox102_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
    Call Sprechen
End Sub

Private Sub TextBox102_Enter()
    Call Sprechen
End Sub

Private Sub TextBox102_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    Call SprechenExit  
End Sub
Es ist also erreicht, dass bei einer aktiven TextBox bei MouseMove einmal der Inhalt gesprochen wird. ebenfalls bei hineinspringen per Tab  und bei Änderung
des Inhaltes auch beim verlassen dieser gesprochen wird.
Jatzt muss das ganze noch auf die Commandbuttons umgesetzt werden.
Also erst mal vielen lieben Dank an Euch zwei. Wenn es Probs gibt melde ich mich.
LG
Jürgen
PS.: Sabina wieder kein Fettnäpfchen getroffen  :19: :19: :19: :19:
Antworten Top
#49
Hmmm - zu Früh gefreut - funzt noch nicht so wie es soll, denn er gibt nur per sprache das aus was im Focus ist
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste