mein vorheriger Beitrag https://www.herber.de/cgi-bin/eachthread.pl?idx=1944058 ist anscheinend schon geschlossen. Ist aber gar nicht so schlimm da sich das Problem inzwischen etwas verlagert hat.
Ich möchte eine Information (String) die der Funktion übergeben wird mit denen in einem geschlossenen Tabellenblatt vergleichen. Je nachdem ob der String darin vorkommt oder nicht, soll die Funktion einen anderen String zurück geben.
(Zusatzinfo: Dieser String soll von einer aufrufenden Funktion verwendet werden und zusammen mit Strings/ Ergebnissen von weiteren Funktionen an die Zelle, die die aufrufende Funktion aufruft, ausgegeben werden.)
Mein Code zu der Funktion sieht folgender Maßen aus:
Public Function GetInformationen(Comment)
InfoPfad="C:\Test\...\"
InfoName="Excel1.xlsx"
InfoBlatt="Tabelle1"
c=0
For x=2 To 50
Zeile="R"& x
For y=1 To 7
Spalte="C"& y
If Comment=ExecuteExcel4Macro("'" & InfoPfad & "[" & InfoName & "]" & InfoBlatt & "'!" & Zeile & Spalte) Then
c=c+1
Else
c=c+0
End If
Next
Next
If c=0 Then
Ergebnis="Nicht gefunden. nok"
ElseIf c=1 Then
Ergebnis="Gefunden. ok"
ElseIf c>1 Then
Ergebnis="Mehrere gefunden. nok"
End If
GetInformationen = Ergebnis
End Function
Wenn ich diese Funktion in einem Sub wie folgt aufrufeSub test()
Debug.Print GetInformationen("Info")
End Sub
bekomme ich auch ein korrektes Ergebnis.
Möchte ich die Funktion aber in einem Tabellenblatt aufrufen, bricht die Funktion bei der If-Schleife
...
If Comment=ExecuteExcel4Macro("'" & InfoPfad & "[" & InfoName & "]" & InfoBlatt & "'!" & Zeile & Spalte) Then
...
ab und ich bekomme nur die Rückmeldung #WERT!. Ich hatte auch schon alle Variablen vorblidlich deklariert, leider ohne Erfolg. Deswegen hier die kürzere Variante.
Weiß jemand von euch woran das liegen könnte und wie ich das beheben kann?
Wie bereits gesagt möchte ich das Kopieren der Daten in das File in dem ich die Funktion aufrufe möglichst vermeiden. Ein erster Versuch das darüber zu lösen ist nämlich auch schon gescheitert.