Thema Datum  Von Nutzer Rating
Antwort
Rot Mit Schleife über Range und dabei Inhalte Prüfen
19.01.2015 21:00:48 Rolf
****
NotSolved
20.01.2015 20:47:13 Gast86936
NotSolved

Ansicht des Beitrags:
Von:
Rolf
Datum:
19.01.2015 21:00:48
Views:
1442
Rating: Antwort:
  Ja
Thema:
Mit Schleife über Range und dabei Inhalte Prüfen

Moin zusammen, 

eigentlich bin ich nicht so ein richtiger Anfänger. Zumindest kenne ich die ein- oder andere Programmiersprache. Aber dieses kleine Progrämmchen hier will nicht so wie ich ... und ich komme nicht weiter. Vielleicht könnt ihr mir helfen. 

Was ich tun will: 

- Eine Funktion schreiben, der ich eine Range mitgeben kann (also einen markierten Bereich im Excel)

- Die Funktion soll über die einzelnen Zeilen in dem Bereich gehen und umliegende zellen jeder zelle anhand deren inhalte prüfen

- sind bestimmte inhalte vorhanden, so soll ein zähler hochgezählt werden

- Rückgabewert ist die Anzahl positiv geprüfter zellen der range

Das geht bestimmt auch alles irgendwie ganz anders (Formel mit Logik oder andere Logik). Aber ich möchte es gern so ähnlich machen ... es muss ja irgendwie möglich sein und dabei lerne ich bestimmt noch was :)

Hier mein Versuch der Formel Treffer() mit Makro als Test-Aufruf. Eigentlich brauche ich nur die Formel. 

Function TREFFER(r As Range) As Integer
    'initialisieren
    Dim zelle1 As Range
    Dim zelle2 As Range
    Dim zelle3 As Range
    Dim zelle4 As Range
    Dim zelle5 As Range
    Dim aktuellezelle As Range
    
    Dim couter As Integer
    Dim bedingung1 As Boolean
    Dim bedingung2 As Boolean
    
    counter = 0
    bedingung1 = False
    bedingung2 = False
    
    'schleife über range
    'dabei gehe ich davon aus, dass r bei jedem schleifendurchlauf eine zelle aus der mitgegebenen range darstellt
    For Each r In Selection
        'hier möchte ich einer variablen eine zelle zuweisen. die zelle,
        'die ich mit der nächsten zeile zuweisen möchte, befindet sich unmittelbar über der aktuellen zelle in r
        Set zelle1 = Cells(r.Row - 1, r.Column)
        'weitere zuweisungen
        Set zelle2 = Cells(r.Row - 2, r.Column)
        Set zelle3 = Cells(r.Row - 3, r.Column)
        Set zelle4 = Cells(r.Row - 1, r.Column - 1)
        Set zelle5 = Cells(r.Row - 1, r.Column + 1)
        Set aktuellezelle = Cells(r.Row, r.Column)
        
        If ((zelle1.Value = "X") Or (zelle2.Value = "X") Or (zelle3.Value = "X") Or (zelle4.Value = "X") Or (zelle4.Value = "X")) Then
            bedingung1 = True
        End If
 
        If aktuellezelle.Value = "X" Then
            bedingung2 = True
        End If
        
        If ((bedingung1 = True) And (bedingung2 = True)) Then
            'beide bedingungen treffen auf die aktuelle zelle zu, dann zähle hoch
            counter = counter + 1
        End If
    Next r
    'gebe zähler zurück
    TREFFER = counter
End Function

Sub Testlauf()
    Dim test As Range
    Set test = Sheet1.Range("H7", "BD7")
    Debug.Print TREFFER(test)
End Sub

 

Vielen Dank im Voraus schon mal für eure Unterstützung!

Rolf


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
Rot Mit Schleife über Range und dabei Inhalte Prüfen
19.01.2015 21:00:48 Rolf
****
NotSolved
20.01.2015 20:47:13 Gast86936
NotSolved