Bereich nach Werten größer 0 durchsuchen
#1
Hallo zusammen,

ich möchte mit einem Makro einen Bereich durchsuchen nach Werten, die Größer als Null sind.

Sub Suche()
Dim rng As Range

Set rng = ActiveSheet.Range("A1:H100").Find()
If rng Is Nothing Then
  MsgBox "Nichts gefunden"
  Exit Sub
End If
MsgBox rng.Address
End Sub

Was muss man nun bei Find() eintragen?

Vielen Dank
Top
#2
Hallo,

muss es denn ein Makro sein? Geht mit Formeln auch, u.A. so:
=WENN(SUMMEWENN(Bereich;">0")>0;"Gefunden";"Keine gefunden")
Gruß
Michael
Top
#3
Ja, es müsste ein Makro sein. Das ist auch nur ein kleiner Teil vom gesamten Makro.
Top
#4
Mit Find wirst Du mE nicht zum gewünschten Ziel kommen, da bei Find der Zellinhalt durchsucht werden kann (auf bestimmte Zeichen) aber nicht nach Werten mit größer und kleiner.

Du könntest eine eigene Routine schreiben, die den Bereich entsprechend mit einer Schleife durchgeht und dann das gewünschte zurückgibt (z. B. die Adresse, den Verweis auf die Zelle, etc.).

Bevor hier irgendeiner Zeit in einen Beispielcode steckt und es dann doch anders aussehen soll: Was hast Du genau vor? Was soll das Ergebnis der Suche genau sein und wie willst Du dann das Ergebnis weiterverarbeiten?
Gruß
Michael
Top
#5
Das hatte ich schon vermutet, dass man nur exakte Werte suchen kann, aber ich habe jetzt einen alternativen Weg gefunden über eine If-Abfrage.
Top
#6
Hallo

Zitat:dass man nur exakte Werte suchen kann      Stimmt nicht, wie mein Makro beweisst !!
Hier kann man beliebig viele Zellen durchsuchen und jederzeit Abbrechen wann man will.

mfg  Gast 123

Code:
Sub Suche()
Dim rng As Range, ok As Variant

For Each rng In ActiveSheet.Range("A1:H100").Find()
If rng.Value > 0 Then
  rng.Select
  ok = MsgBox(rng.Address & " gefunden - Weitermachen?", vbOKCancel)
  If ok = vbCancel Then Exit Sub
End If
Next rng
End Sub
Top
#7
Hallo 123,

hat ja keiner geschrieben, dass es gar nicht geht, nur mit Find wirst Du Dich schwer tun einen Wert anhand des Vorzeichens zu finden. Und ich habe ja eine Schleife vorgeschlagen.

Hast Du übrigens Deinen Code mal getestet? Find ohne Argumente dürfte mW nicht funktionieren. Vermutlich wolltest Du den kompletten Bereich mit der Schleife durchgehen und das Find ist vom OP noch hängen geblieben, oder? Denn es macht doch keinen Sinn, eine Schleife über "eine Zelle" die per Find gefundenen gefunden wurde laufen zu lassen (Find gibt mW immer nur eine Zelle zurück)?
Außerdem wird Deine if-Bedingung keine sinvollen Ergebnisse liefern, wenn z. B. Text in der Zelle steht, da auch hier WAHR herauskommt bei der Prüfung, ob die Zelle > 0 ist.
Gruß
Michael
Top
#8
Hallo Michael

ich muss zugeben ich habe den Code nicht getestet.  Schön das du aufmerksam bist, ja ja, die dummen kleinen "Flüchtigkeitsfehler"!! 
Das Find gehört natürlich nicht mehr hinter den Range Bereich, bitte löschen!!  Die IF Auswertung kann auf  CLng(rng) > 0  setzen.

For Each rng In ActiveSheet.Range("A1:H100").Find()
If rng.Value > 0 Then    'kann ersetzt werden durch  s.unten
If CLng(rng) > 0 Then

mfg Gast 123
Top


Gehe zu:


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