Thema Datum  Von Nutzer Rating
Antwort
24.04.2014 12:40:58 Corina
NotSolved
24.04.2014 17:08:01 Corina
NotSolved
24.04.2014 21:43:02 gabi
NotSolved
25.04.2014 10:21:14 Corina
NotSolved
Rot Vgl. Zelleneinträge mit ShapeText
25.04.2014 13:44:03 Gast25327
*****
Solved
25.04.2014 13:50:37 Gast63045
NotSolved
25.04.2014 16:07:24 Corina
NotSolved
25.04.2014 16:25:04 Corina
NotSolved
25.04.2014 23:00:38 gabi
NotSolved
26.04.2014 09:50:55 gabi
*****
Solved
27.04.2014 13:20:34 Corina
NotSolved
27.04.2014 18:40:31 gabi
NotSolved
28.04.2014 08:46:31 Corina
NotSolved
Blau Wow
28.04.2014 09:24:53 gabi
NotSolved
Rot Wow
28.04.2014 12:51:17 Corina
NotSolved
Blau Wow
28.04.2014 15:29:14 gabi
NotSolved
Rot Wow
29.04.2014 09:55:11 Corina
NotSolved
29.04.2014 12:15:23 gabi
NotSolved
28.04.2014 13:46:57 Gast40414
NotSolved
28.04.2014 14:29:04 Corina
NotSolved
28.04.2014 15:02:35 Gast13316
NotSolved
28.04.2014 15:06:49 Gast54937
NotSolved
28.04.2014 15:31:48 Corina
NotSolved
28.04.2014 14:37:59 Corina
NotSolved
27.04.2014 12:50:26 Corina
NotSolved

Ansicht des Beitrags:
Von:
Gast25327
Datum:
25.04.2014 13:44:03
Views:
1664
Rating: Antwort:
 Nein
Thema:
Vgl. Zelleneinträge mit ShapeText

>> 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ß


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
24.04.2014 12:40:58 Corina
NotSolved
24.04.2014 17:08:01 Corina
NotSolved
24.04.2014 21:43:02 gabi
NotSolved
25.04.2014 10:21:14 Corina
NotSolved
Rot Vgl. Zelleneinträge mit ShapeText
25.04.2014 13:44:03 Gast25327
*****
Solved
25.04.2014 13:50:37 Gast63045
NotSolved
25.04.2014 16:07:24 Corina
NotSolved
25.04.2014 16:25:04 Corina
NotSolved
25.04.2014 23:00:38 gabi
NotSolved
26.04.2014 09:50:55 gabi
*****
Solved
27.04.2014 13:20:34 Corina
NotSolved
27.04.2014 18:40:31 gabi
NotSolved
28.04.2014 08:46:31 Corina
NotSolved
Blau Wow
28.04.2014 09:24:53 gabi
NotSolved
Rot Wow
28.04.2014 12:51:17 Corina
NotSolved
Blau Wow
28.04.2014 15:29:14 gabi
NotSolved
Rot Wow
29.04.2014 09:55:11 Corina
NotSolved
29.04.2014 12:15:23 gabi
NotSolved
28.04.2014 13:46:57 Gast40414
NotSolved
28.04.2014 14:29:04 Corina
NotSolved
28.04.2014 15:02:35 Gast13316
NotSolved
28.04.2014 15:06:49 Gast54937
NotSolved
28.04.2014 15:31:48 Corina
NotSolved
28.04.2014 14:37:59 Corina
NotSolved
27.04.2014 12:50:26 Corina
NotSolved