gimli3311
Goto Top

Parameterübergabe

Guten Tag Zusammen,

ich brauch mal wieder eure Hilfe.

Und zwar suche ich mit der Methode find entweder nach "Logbuch" oder "logbook". Falls nur eins von den Kriterien gefunden wird soll die Variable blFounded auf true gesetzt werden. Und wieder an die Sub zurück geschickt werden.
Das Problem ist die variable wird auf true gesetzt wenn es was findet aber in der Sub ist sie wieder auf false.

Schonmal Danke für Eure Hilfe face-smile

Option Explicit
Dim blFounded As Boolean

Sub main()
blFounded = False
'Ruft Funktion suche auf  
 blFounded = suche(blFounded)
 'Wenn blFounded = True wurde was gefunden  
 If blFounded = True Then
    MsgBox "Es wurde was gefunden"  
 Else
    MsgBox "Es wurde nichts gefunden"  
 End If
 End Sub

Function suche(ByRef blFounded As Boolean)
    Dim c As Object, d As Object
    Dim firstAddress As String

    With Worksheets(5).Range("a1:m60")  
    'Suche nach Logbuch  
    Set c = .Find("Logbuch", LookIn:=xlValues)  
    If Not c Is Nothing Then
        firstAddress = c.Address
        Do
            blFounded = True
            Set c = .FindNext(c)
        Loop While Not c Is Nothing And c.Address <> firstAddress
    End If
    'Suche Nach Logbook  
    Set d = .Find("Logbook", LookIn:=xlValues)  
    If Not d Is Nothing Then
        firstAddress = d.Address
        Do
            blFounded = True
            Set d = .FindNext(d)
        Loop While Not d Is Nothing And d.Address <> firstAddress
    End If
    End With
 End Function

Gruß Gimli3311

Content-Key: 265017

Url: https://administrator.de/contentid/265017

Printed on: May 4, 2024 at 02:05 o'clock

Mitglied: 114757
114757 Mar 02, 2015 updated at 15:35:45 (UTC)
Goto Top
Du gibst aus der Function ja gar nichts zurück ...
Du musst dich schon entscheiden, den Wert aus der Function zurückzugeben, oder die Variable via ByRef zu ändern
Zeile 7 einfach ändern auf:
suche(blFounded)
Dann klappt's auch mit dem Nachbarn ...

Gruß jodel32
Member: Gimli3311
Gimli3311 Mar 02, 2015 updated at 15:46:50 (UTC)
Goto Top
Ich hab jetzt Zeile 7 geändert. Aber bekomm immer noch false raus obwohl es sich in der Funktion auf true ändert.
Ich denke mal weil ich immer noch nichts zurück gebe. Aber ich weiß nicht wie ich des machen soll?

Danke Jodel32 das mich noch nicht Aufgegeben hast :D

Gruß Gimli3311
Mitglied: 114757
Solution 114757 Mar 02, 2015, updated at Mar 03, 2015 at 13:40:18 (UTC)
Goto Top
Dir muss man aber auch alles vorkauen ...
Ist sowieso zuviel unnützes Zeug in deiner Function ...
Hier die Variante mit Rückgabewert aus der Function
Option Explicit
Dim blFounded As Boolean

Sub main()
'Ruft Funktion suche auf  
 blFounded = suche()
 'Wenn blFounded = True wurde was gefunden  
 If blFounded = True Then
    MsgBox "Es wurde was gefunden"  
 Else
    MsgBox "Es wurde nichts gefunden"  
 End If
 End Sub

Function suche() as Boolean
    Dim c As Object, d As Object
    With Worksheets(5).Range("a1:m60")  
    'Suche nach Logbuch  
    Set c = .Find("Logbuch", LookIn:=xlValues)  
    If Not c Is Nothing Then
            suche = True
            Exit Function
    End If
    'Suche Nach Logbook  
    Set d = .Find("Logbook", LookIn:=xlValues)  
    If Not d Is Nothing Then
            suche = True
            Exit Function
    End If
    End With
 End Function
p.s. Vergangenheitsformen musst du auch noch lernen
founded face-big-smile
Member: SlainteMhath
Solution SlainteMhath Mar 02, 2015, updated at Mar 03, 2015 at 13:40:15 (UTC)
Goto Top
Moin,

die korrekte Syntax ist:

Zeile 7:
blFounded = suche()

Zeile 16:
Function suche()

nach Zeile 16
Dim blFounded As Boolean

nach Zeile 39
suche = blFounded


lg
Slainte

P.S.:
Und noch nebenbei (weils mir echt in den Augen weh tut face-smile )
die Vergangenheit von Finden auf Englisch ist "found" nicht "founded" (autsch)

P.P.S: Mist, zulangsam :/
Member: Gimli3311
Gimli3311 Mar 02, 2015 updated at 16:06:25 (UTC)
Goto Top
@114757, Danke dir face-smile Dein Code ist viel einfacher und kürzer. Und sorry das ich dir solche Umstände bereite aber bin noch VBA-Neuling und fleißig am lernen

@SlainteMhath, Auch an dich Danke das du trotz meines Founded <--(Wird zeit Feierabend zu machen :D) Grammatikfehler den Code durchgelesen hast. face-smile

Nochmals vielen Dank euch beiden face-smile werde mich sicher bald wieder melden


Gruß Gimli3311

PS: Dafür habt ihr zwei was zu lachen ;)