Microsoft Excel

Herbers Excel/VBA-Archiv

Suchmakro funktioniert als Funktion nicht mehr

Betrifft: Suchmakro funktioniert als Funktion nicht mehr von: th0mas
Geschrieben am: 12.08.2004 14:42:36

Hi!

Ich möchte diesen Code als Funktion implementieren. Habe eine suchfunktion aus diesem Forum eingebaut. Funktioniert recht gut als Makro mit Texteingabe für den Suchstring, aber in dieser Funktion findet er nie die gesuchten Einträge obwohl vorhanden (und vom Makro gefunden). Kann mir jemand helfen?

Function plgrowth() As Variant
    Application.Volatile
    
    Dim pl As String
    Dim oldValue As Variant
    Dim newValue As Variant
    Dim suchErg As Variant
    
    pl = Application.Caller.Offset(0, -3).Value
    oldValue = Application.Caller.Offset(0, -2).Value
    newValue = Application.Caller.Offset(0, -1).Value
    
    Sheets("Translation").Activate
    Set suchErg = Sheets("Translation").Cells.Find(pl)
    If Not suchErg Is Nothing Then
        plgrowth = "Error"
    Else
        If ((oldValue = 0) Or (newValue = 0)) Then
            plgrowth = ""
        Else
            plgrowth = (newValue / oldValue) - 1
        End If
    End If
    Set suchBereich = Nothing
    
End Function

  


Betrifft: AW: Suchmakro funktioniert als Funktion nicht mehr von: Ulf
Geschrieben am: 12.08.2004 14:44:40

Find in Functions war wohl in deiner Excelversion ein Bug, will sagen, funktioniert nicht.

Ulf


  


Betrifft: AW: Suchmakro funktioniert als Funktion nicht mehr von: th0mas
Geschrieben am: 12.08.2004 14:50:52

Oder sieht jemand einen Programmierfehler? Falls es wirklich ein Bug ist, wie kann ich mein Problem anders lösen?

Muss ein Sheet nach einem bestimmten Eintrag (pl) durchsuchen und will dann dessen Spalte/Zeile wissen, mehr nicht.


  


Betrifft: AW: Suchmakro funktioniert als Funktion nicht mehr von: Ulf
Geschrieben am: 12.08.2004 15:00:30

Warum muss es denn eine Function sein?

Ulf


  


Betrifft: AW: Suchmakro funktioniert als Funktion nicht mehr von: th0mas
Geschrieben am: 12.08.2004 15:03:59

Ich wüsste nicht wie ichs anders machen soll. Die Suche ist nur ein Teil der Function.
Falls der wert gefunden wird soll ein anderer berechnet und zurückgegeben werden.
Falls nicht kann normal der prozentsatz berechnet werden.

Ich muss diese Function aber für bis zu 100 einträge anwenden - deswegen erscheint mir die Implementierung als function logisch.


  


Betrifft: AW: Suchmakro funktioniert als Funktion nicht mehr von: Ulf
Geschrieben am: 12.08.2004 15:12:52

Du kannst den Wert ebenso an eine Variable übergeben. Ohne den Zusammenhang zu kennen,
wirds wieder das heitere Ratespiel.

Ulf


  


Betrifft: AW: Suchmakro funktioniert als Funktion nicht mehr von: th0mas
Geschrieben am: 13.08.2004 11:38:04

Danke für die Tipps. Funktioniert mittlerweile schon, allerdings musste ich mein Office auf XP updaten. HAt in der 2000er Version tatsächlich einen Bug.

Als Sub hab ichs vorher auch schon probiert funktionierte aber auch nicht.


  


Betrifft: AW: Suchmakro funktioniert als Funktion nicht mehr von: Luschi
Geschrieben am: 12.08.2004 15:16:54

Hallo Thomas,

es dürfte wohl die letzte Zeile vor End
Sub sein, die den Fehler verursacht.
Statt Set suchBereich = Nothing müßte es wohl
      Set suchErg = Nothing heißen.

Habe es gerade mal in Excel 2003 ausprobiert. Sobald ein klitzekleiner Programmier-
fehler drin ist, wird abgebrochen und in der Zell erscheint #Wert!. Da kann mach
sich richtig "tot"-Suchen.

So funktioniert bei mir die Funktion:

Function plgrowth() As Variant
    Application.Volatile
    
    Dim pl As Variant
    Dim oldValue As Variant
    Dim newValue As Variant
    Dim suchErg As Variant
    
    pl = Application.Caller.Offset(0, -3)
    oldValue = Application.Caller.Offset(0, -2).Value
    newValue = Application.Caller.Offset(0, -1).Value
    Sheets("Translation").Activate
    Set suchErg = Sheets("Translation").Cells.Find(pl)
    If suchErg Is Nothing Then
        plgrowth = "Error"
    Else
        If ((oldValue = 0) Or (newValue = 0)) Then
            plgrowth = ""
        Else
            plgrowth = (newValue / oldValue) - 1
        End If
    End If
    Set suchErg = Nothing
End Function


Gruß von Luschi
aus klein-Paris


  


Betrifft: AW: Suchmakro funktioniert als Funktion nicht mehr von: th0mas
Geschrieben am: 12.08.2004 15:28:34

Danke für die Hilfen, es funktioniert bei mir leider immer noch nicht. Vl ist es wirklich ein versionsabhängiger Bug. Kann man das auch irgendwie anders lösen? Was ich machen will:

ich habe eine Tabelle [PL][Zahl][Zahl][=Formel]
und das 20-100 spalten.

Nun soll die Formel die prozentuelle Änderung berechnen, ABER NUR wenn der Wert von [PL] NICHT in einem anderen Worksheet namens "Translation" vorkommt. Es ist das ganze Sheet abzusuchen. Kommt es vor wird anhand von Spalte & Reihe des gesuchten Eintrages entschieden/berechnet was statt der prozentuellen Änderung angezeigt werden soll.


  


Betrifft: AW: Suchmakro funktioniert als Funktion nicht mehr von: Bert
Geschrieben am: 12.08.2004 16:52:51

Du hast doch die Antwort schon erhalten, benutz keine Function sondern eine Sub.

Gruß Bert


 

Beiträge aus den Excel-Beispielen zum Thema "Suchmakro funktioniert als Funktion nicht mehr"