Registriert seit: 22.01.2018
Version(en): 2016
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
Registriert seit: 11.03.2015
Version(en): mittlerweile meistens 2019
Hallo,
muss es denn ein Makro sein? Geht mit Formeln auch, u.A. so:
=WENN(SUMMEWENN(Bereich;">0")>0;"Gefunden";"Keine gefunden")
Gruß
Michael
Registriert seit: 22.01.2018
Version(en): 2016
Ja, es müsste ein Makro sein. Das ist auch nur ein kleiner Teil vom gesamten Makro.
Registriert seit: 11.03.2015
Version(en): mittlerweile meistens 2019
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
Registriert seit: 22.01.2018
Version(en): 2016
Das hatte ich schon vermutet, dass man nur exakte Werte suchen kann, aber ich habe jetzt einen alternativen Weg gefunden über eine If-Abfrage.
Registriert seit: 12.03.2016
Version(en): Excel 2003
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
Registriert seit: 11.03.2015
Version(en): mittlerweile meistens 2019
25.01.2018, 14:14
(Dieser Beitrag wurde zuletzt bearbeitet: 25.01.2018, 14:14 von Der Steuerfuzzi.)
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
Registriert seit: 12.03.2016
Version(en): Excel 2003
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