|  
                                             
	>> Ich möchte gerne jeden einzelnen Zelleneintrag eines Bereiches mit allen Text vergleichen, die in bestimmten Formen angezeigt werden. 
	Ansich hast du ja schon alles verbal beschrieben. 
	* jede einnzelne Zelle => Schleife für Zellen 
	* alle Texte (bestimmter) Formen => Schleife für Formen 
	* vergleichen => Vergleich zw. der jeweiligen Form mit dem jeweiligen Zelleninhalt 
	  
	Daraus bildet man sich seinen ersten Ansatz, z.B. in PseudoCode: 
	FÜR JEDE zelle IN BEREICH 
	  FÜR JEDE form IN formen 
	    WENN zelle text = form text DANN gefunden := wahr 
	  NÄCHSTE form 
	  WENN gefunden = wahr DANN 
	    meldung "erfolg" 
	  SONST 
	    meldung "neu form anlegen" 
	  ENDE WENN 
	NÄCHSTE zelle 
	  
	Bei kleinen Projekten geht das noch gut im Kopf. Wobei, das gilt mehr für bereits erfahrene Menschen. Als Anfänger sollte man sich das irgendwo aufschreiben, damit man es vor Augen hat und den Faden nicht verliert (man konzentriert sich so auf nur jeweils eine Sache: "Coden", oder "Ablauf durchdenken"). 
	Jeder hat so mal angefangen, vorallem diejenigen die das von der Pike auf gelernt haben. Bevor die auch nur eine einzige Zeile Code am Computer tippen durften, mussten die einen Programmablaufplan, Struktogram, oder was auch immer auf Papier bringen (später nimmt für sowas, vorallen größere Projekte, dann Hilfswerkzeuge am PC in Anspruch). 
	  
	Von dem Ansaz oben kommt man dann nach und nach auf folgende Lösung. 
Sub test1()
  
  Dim rngBereich  As Excel.Range
  Dim rngZelle    As Excel.Range
  Dim shp         As Excel.Shape
  Dim blnTreffer  As Boolean
  
  With ThisWorkbook.Worksheets("Lists")
    
    Set rngBereich = .Cells(.Rows.Count, "A").End(xlUp)
    Set rngBereich = .Range("D3:G" & rngBereich.Row)
    
    For Each rngZelle In rngBereich
      
      For Each shp In .Shapes
        If rngZelle.Text <> "" _
        And rngZelle.Text = shp.TextFrame2.TextRange.Text _
        Then
          blnTreffer = True
          Exit For
        End If
      Next
      
      If blnTreffer Then
        Call MsgBox("Erfolg.", vbInformation)
        blnTreffer = False
      Else
        Call MsgBox("Neue Form muss hinzugefügt werden!", vbExclamation)
      End If
      
    Next
    
  End With
  
End Sub
	Hier wird z.B. noch darauf getestet das die Zelle auch einen Inhalt hat und nur dann wird erst der Vgl. durchgeführt. Derlei Dinge fließen normalerweise auch schon in die vorrausgegangene Planung mit ein. 
	  
	Jetzt will man aber bestimmt nicht 100 Meldungen wegklicken. Also nimmt man eine Änderung/Verbesserung daran vor. Normalerweise findet diese noch wärend der Planung statt, also vor dem Coden. Als Anfänger wrid man sowas aber nicht gänzlich vermeiden können. Ist ansich auch gut so, denn daraus lernt man weitsichtiger zu denken. Das ist ein Entwicklungsprozess, manche tun sich da leichter, manche nicht. 
	  
Sub test2()
  
  Dim rngBereich  As Excel.Range
  Dim rngZelle    As Excel.Range
  Dim shp         As Excel.Shape
  Dim blnTreffer  As Boolean
  Dim n           As Long
  
  With ThisWorkbook.Worksheets("Lists")
    
    Set rngBereich = .Cells(.Rows.Count, "A").End(xlUp)
    Set rngBereich = .Range("D3:G" & rngBereich.Row)
    
    For Each rngZelle In rngBereich
      
      For Each shp In .Shapes
        If rngZelle.Text <> "" Then
          If rngZelle.Text = shp.TextFrame2.TextRange.Text Then
            blnTreffer = True
            Exit For
          End If
        Else
          blnTreffer = True
        End If
      Next
      
      If blnTreffer Then
        blnTreffer = False
      Else
        n = n + 1
      End If
      
    Next
    
    If n > 0 Then
      Call MsgBox(n & " neue Form(en) muss hinzugefügt werden!", vbExclamation)
    Else
      Call MsgBox("Alles i.O.", vbInformation)
    End If
    
  End With
  
End Sub
	Ob das nun schon DIE Lösung isfür dich ist, kann ich nicht sagen. 
	  
	Gruß 
     |