Office: (Office 2016) VBA Hilfe bei MSG Box

Helfe beim Thema VBA Hilfe bei MSG Box in Microsoft Excel Hilfe um das Problem gemeinsam zu lösen; Hallo zusammen, ich möchte per VBA eine Suche in Objekten starten was alles eigentlich auch wunderbar funktioniert. Allerdings möchte ich die Boxen... Dieses Thema im Forum "Microsoft Excel Hilfe" wurde erstellt von MHS1002, 10. Januar 2020.

  1. MHS1002 Erfahrener User

    VBA Hilfe bei MSG Box


    Hallo zusammen,
    ich möchte per VBA eine Suche in Objekten starten was alles eigentlich auch wunderbar funktioniert.
    Allerdings möchte ich die Boxen die angezeigt werden etwas umstellen und komm damit nicht wirklich klar.

    Bei der Textsuche nach der Inputbox werden die Objekte durchsucht, wenn was gefunden wird, wird es angezeigt und man wird gefragt ob weitergesucht werden soll, soweit alles ok. Was ich gerne anders hätte. Wenn bei der ersten Abfrage oder beim weitersuchen nichts mehr gefunden wird, soll der Text mit einer abfrage eingebaut werden, "Kein Inhalt mit dem Text gefunden, anderen Text eingeben? Yes = Abfrage startet von neuem, No = EndSub. Ich hoffe ich konnte mich einigermaßen ausdrücken ;-)

    Danke für die Unterstützung
    Grüße MHS1002

    HTML:
    Option Explicit
    Sub searchInForms()
    
      Dim objShp As Object
      Dim objWS As Worksheet
      Dim strSearch As String
      Dim retMsg As VbMsgBoxResult
      
      
      Set objWS = ThisWorkbook.ActiveSheet
      
      objWS.Unprotect Password:="XXX"
     
      strSearch = InputBox("Suchbegriff eingeben", "Textsuche")
      
      If Len(strSearch) Then
          For Each objShp In objWS.Shapes
            If InStr(1, objShp.TextFrame.Characters.Text, strSearch, vbTextCompare) Then
               
              
              Application.Goto Reference:=objShp.TopLeftCell, Scroll:=False
              
              'die Farbe des Text auf rot ändert.
              objShp.TextFrame.Characters.Font.Color = vbRed
              Application.ScreenUpdating = True
              retMsg = MsgBox("Weitersuchen?", vbYesNo, "Textsuche")
              
              'Farbe des Objekts wieder auf den Ursprungswert (weiss) setzen.
              objShp.TextFrame.Characters.Font.Color = vbWhite
              
              If retMsg = vbNo Then Exit For
              
            End If
          Next
          objWS.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True, Password:="XXX"
          MsgBox "Suche beendet!", , "Textsuche"
          
          
          
      End If
     
     
      
    End Sub
     
    MHS1002, 10. Januar 2020
    #1
  2. Lutz Fricke Erfahrener User
    Hallo MHS1002,

    Probier mal so:
    Code:
    ...
    
    NewMsg=vbYes
    Erfolg=false
    
    Do While NewMsg=vbYes
      strSearch = InputBox("Suchbegriff eingeben", "Textsuche")
      ...
              If InStr(1, objShp.TextFrame.Characters.Text, strSearch, vbTextCompare) Then
                   Erfolg = true
    ...
          MsgBox "Suche beendet!", , "Textsuche" 
     End If
    
    If Erfolg=true then
       NewMsg = MsgBox("Kein Inhalt mit dem Text gefunden, anderen Text eingeben?", vbYesNo, "Textsuche")
    End if
    
    Loop
    
    ...
    
    Die Zeile
    Code:
         objWS.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True, Password:="XXX"
    solltest Du ganz ans Ende setzen, damit Deine Datei am Ende auch wieter Passwortgeschützt ist.

    Der Code ist ungetestet.

    Gruß,
    Lutz
     
    Lutz Fricke, 10. Januar 2020
    #2
  3. MHS1002 Erfahrener User
    Hallo Lutz,
    vielen Dank für deine Hilfe...
    Allerdings bekomme ich das nicht so zusammen, dass es läuft :-(
    Könntest du mir den Code zusammensetzen, damit ich ihn testen kann?

    Danke und Grüße
     
    MHS1002, 10. Januar 2020
    #3
  4. Lutz Fricke Erfahrener User

    VBA Hilfe bei MSG Box

    Hallo MHS1002,

    anbei zusammengesetzt.
    Es war tatsächlich auch ein Fehler in der neuen If-Abfrage drin.

    Code:
    Option Explicit
    Sub searchInForms()
    
      Dim objShp As Object
      Dim objWS As Worksheet
      Dim strSearch As String
      Dim retMsg As VbMsgBoxResult
      
      
      Set objWS = ThisWorkbook.ActiveSheet
      
      objWS.Unprotect Password:="XXX"
     
    NewMsg=vbYes
    Erfolg=false
    
    Do While NewMsg=vbYes
    
      strSearch = InputBox("Suchbegriff eingeben", "Textsuche")
      
      If Len(strSearch) Then
          For Each objShp In objWS.Shapes
            If InStr(1, objShp.TextFrame.Characters.Text, strSearch, vbTextCompare) Then
    Erfolg = true
              
              Application.Goto Reference:=objShp.TopLeftCell, Scroll:=False
              
              'die Farbe des Text auf rot ändert.
              objShp.TextFrame.Characters.Font.Color = vbRed
              Application.ScreenUpdating = True
              retMsg = MsgBox("Weitersuchen?", vbYesNo, "Textsuche")
              
              'Farbe des Objekts wieder auf den Ursprungswert (weiss) setzen.
              objShp.TextFrame.Characters.Font.Color = vbWhite
              
              If retMsg = vbNo Then Exit For
              
            End If
          Next
    
          MsgBox "Suche beendet!", , "Textsuche"
          
          
          
      End If
     If Erfolg=false then
       NewMsg = MsgBox("Kein Inhalt mit dem Text gefunden, anderen Text eingeben?", vbYesNo, "Textsuche")
    End if
    
    Loop
    
           objWS.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True, Password:="XXX"
      
    End Sub
    Gruß,
    Lutz
     
    Lutz Fricke, 10. Januar 2020
    #4
  5. MHS1002 Erfahrener User
    Nochmals vielen dank.
    Beim ausführen bekomme ich den Fehler: "Fehler beim Kompilieren, Variable nicht definiert.
    Gleich zu Beginn bei:

    HTML:
    NewMsg = vbYes
    Erfolg = False
     
    MHS1002, 10. Januar 2020
    #5
  6. MHS1002 Erfahrener User
    Hi zusammen,
    also das Makro hab ich nun zum laufen gebracht indem ich die Variablen definiert habe.
    Allerdings hängt das Makro dann in einer Unendlichschleife und ich muss XL mit dem Taskmanager beenden.

    Lutz oder sonst jemand evtl. noch ne Idee?
     
    MHS1002, 12. Januar 2020
    #6
  7. Exl121150 Erfahrener User
    Hallo,

    dabei ist vermutlich der (logische) Fehler nicht beseitigt worden - aber der Code wurde kompilierbar.

    Du musst die Variable "NewMsg" mit einem Namen versehen, der zum nachfolgenden Code passt: "retMsg" - und diese eh deklariert;
    Dieser falsche Variablenname kommt leider 3x vor - vermutlich ein Flüchtigkeitsfehler beim Zusammenstellen des Codes.

    Die Variable "Erfolg" ist natürlich zuvor mit "Dim Erfolg As Boolean" zu deklarieren.

    Code:
    Option Explicit
    
    Sub searchInForms()
    
      Dim objShp As Object
      Dim objWS As Worksheet
      Dim strSearch As String
      Dim retMsg As VbMsgBoxResult
      Dim Erfolg As Boolean
      
      Set objWS = ThisWorkbook.ActiveSheet
      
      objWS.Unprotect Password:="XXX"
     
      retMsg = vbYes
      Erfolg = False
    
      Do While retMsg = vbYes
    
         strSearch = InputBox("Suchbegriff eingeben", "Textsuche")
         
         If Len(strSearch) Then
             For Each objShp In objWS.Shapes
               If InStr(1, objShp.TextFrame.Characters.Text, strSearch, vbTextCompare) Then
                 Erfolg = True
                 
                 Application.Goto Reference:=objShp.TopLeftCell, Scroll:=False
                 
                 'die Farbe des Text auf rot ändert.
                 objShp.TextFrame.Characters.Font.Color = vbRed
                 Application.ScreenUpdating = True
                 retMsg = MsgBox("Weitersuchen?", vbYesNo, "Textsuche")
                 
                 'Farbe des Objekts wieder auf den Ursprungswert (weiss) setzen.
                 objShp.TextFrame.Characters.Font.Color = vbWhite
                 
                 If retMsg = vbNo Then Exit For
                 
               End If
             Next
             MsgBox "Suche beendet!", , "Textsuche"
         End If
         If Erfolg = False Then
            retMsg = MsgBox("Kein Inhalt mit dem Text gefunden, anderen Text eingeben?", vbYesNo, "Textsuche")
         End If
    
      Loop
    
      objWS.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True, Password:="XXX"
      
    End Sub
    
     
    Exl121150, 12. Januar 2020
    #7
  8. MHS1002 Erfahrener User

    VBA Hilfe bei MSG Box

    Hallo Anton,

    vielen Dank für Deine Hilfe. Das Makro läuft nun etwas besser ab.
    Wenn ich nun nach einem Text suche und bei der Abfrage weitersuchen auf nein klicke passt es, dann kommt die Box "Suche beendet"
    Allerdings wenn ich auf weitersuchen klicke und nichts gefunden wurde kommt die Box Suche beendet. wenn ich das mit ok bestätige kommt wieder die Box weitersuchen? Hier sollte eigl. die Meldung ("Kein Inhalt mit dem Text gefunden, anderen Text eingeben?" kommen.
    Wenn die Suche beendet ist, und mit ok bestätigt wird, soll das Makro zu Ende sein.

    Vielleicht könnte da noch jemand Hand anlegen und helfen, danke!
    Grüße
     
    MHS1002, 12. Januar 2020
    #8
  9. Lutz Fricke Erfahrener User
    Hallo MHS1002,

    ich habe den Code nochmal etwas modifiziert und so gut es ging getestet:

    Code:
    Option Explicit
    Sub searchInForms()
    
      Dim objShp As Object
      Dim objWS As Worksheet
      Dim strSearch As String
      Dim retMsg As VbMsgBoxResult
      Dim NewMsg As VbMsgBoxResult
    
      
      Set objWS = ThisWorkbook.ActiveSheet
      
      objWS.Unprotect Password:="XXX"
     
    NewMsg=vbYes
    
    
    Do 
    
      strSearch = InputBox("Suchbegriff eingeben", "Textsuche")
      
      If Len(strSearch) Then
          For Each objShp In objWS.Shapes
            If InStr(1, objShp.TextFrame.Characters.Text, strSearch, vbTextCompare) Then
    NewMsg=vbNo
              
              Application.Goto Reference:=objShp.TopLeftCell, Scroll:=False
              
              'die Farbe des Text auf rot ändert.
              objShp.TextFrame.Characters.Font.Color = vbRed
              Application.ScreenUpdating = True
              retMsg = MsgBox("Weitersuchen?", vbYesNo, "Textsuche")
              
              'Farbe des Objekts wieder auf den Ursprungswert (weiss) setzen.
              objShp.TextFrame.Characters.Font.Color = vbWhite
              
              If retMsg = vbNo Then Exit For
              
            End If
          Next
          
      End If
     If NewMsg=vbYes then
       NewMsg = MsgBox("Kein Inhalt mit dem Text gefunden, anderen Text eingeben?", vbYesNo, "Textsuche")
    End if
    
    Loop Until NewMsg=vbNo
    
          MsgBox "Suche beendet!", , "Textsuche"
           objWS.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True, Password:="XXX"
      
    End Sub
    Wozu hast Du eigentlich noch das
    Application.ScreenUpdating = True
    mitten im Code?

    Gruß,
    Lutz
     
    Lutz Fricke, 13. Januar 2020
    #9
  10. MHS1002 Erfahrener User
    Guten Morgen und herzlichen Dank.
    Nun past es so, wie ich es mir vorgestellt hatte. Wirklich super und danke.

    Wozu hier das Screenupdate eingeschaltet wird, weiss ich auch nicht mehr. Zumal es ja garnicht ausgeschaltet wird?!
    Ich habs gleich raus genommen.

    Viele Grüße
     
    MHS1002, 13. Januar 2020
    #10
Thema:

VBA Hilfe bei MSG Box

Die Seite wird geladen...
  1. VBA Hilfe bei MSG Box - Similar Threads - VBA Hilfe MSG

  2. Speichern mit dem Titel der Zelle A2

    in Microsoft Excel Hilfe
    Speichern mit dem Titel der Zelle A2: Moin moin, Ich habe per Makro einen Arbeitsablauf aufgezeichnet der soweit auch funktioniert. Dieser Endet jedoch im "Speichern Unter" Fenster, welches durch das Klicken von "Drucken als PDF"...
  3. Excel VBA - Code Hilfe (Spalten, Werte kopieren etc.)

    in Microsoft Excel Hilfe
    Excel VBA - Code Hilfe (Spalten, Werte kopieren etc.): Hallo, ich benötige Hilfe für ein Problem, welches ich leider selbst schwerlich als Anfänger nicht lösen kann: Ich möchte von dem Tabellenblatt "Tabelle1" aus den Zellen B8:B14, K8:K14, B18:B25,...
  4. Automatisch aktualisierende Tabelle? Hilfe!! :-)

    in Microsoft Excel Hilfe
    Automatisch aktualisierende Tabelle? Hilfe!! :-): Hallo zusammen, ich habe da ein kleines Excel-Problem und komme einfach nicht auf die Lösung. Ich habe 25 riesige Tabellen und möchte diese in einer Tabelle zusammen, wenn eine bestimmte...
  5. Hilfe bei VBA-Programmierung

    in Microsoft Excel Hilfe
    Hilfe bei VBA-Programmierung: Hallöchen zusammen, ich bräuchte mal wieder eure Hilfe. Diesmal geht es um ein VBA-Programm bzw. -Funktion. Folgender Sachverhalt: Ich habe Rohdaten in einer Textdatei, die ich mir in Excel...
  6. VBA Hilfe für Zahlen eingeben und addieren + zellinhalt löschen

    in Microsoft Excel Hilfe
    VBA Hilfe für Zahlen eingeben und addieren + zellinhalt löschen: Hallo Leute ich brauche dringend Hilfe von einem VBA Spezialisten. Ich hoffe ihr seit mir nicht böse wenn ich sage das ich alles in der Datei beschrieben habe. Würde mich sehr freuen wenn jemand...
  7. VBA - Zeilen je nach Bedingung in neues Tabellenblatt verschieben und löschen

    in Microsoft Excel Hilfe
    VBA - Zeilen je nach Bedingung in neues Tabellenblatt verschieben und löschen: Hallo liebe Excel-Kommunity, nach ewigen Stunden des Suchens und Rumprobierens bin ich an dem Punkt angekommen an dem ich verzweifelt um eure Hilfe fragen muss. Da ich leider keinerlei...
  8. Benötige Hilfe zu vba

    in Microsoft Excel Hilfe
    Benötige Hilfe zu vba: Hallo zusammen, ich habe eine Herausforderung, die ich mit meinen vba-Kenntnissen nicht lösen kann. Die Problematik stelle ich per Screenshot da. Ich bedanke mich schon im Vorfeld bei Euch für...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden