ich bitte um eure Hilfe.
In VBA habe ich eine kleine "
Function Werkzeug() As String" geschrieben (s.unten). Diese Funktion rufe ich innerhalb einer Datei, jedoch in 3 Tabellenblättern gleichzeitig auf. Theoretisch sollte jeder Aufruf einen anderen Wert ausgeben, da die Blätter unterschiedliche Daten enthalten.
Markiere ich alle 3 Blätter gleichzeitig und löse die Zelle mit der Funktion aus, so steht überall der gleiche Wert. Löse ich jede Zelle einzeln aus, so steht überall der richtige Wert drinn.
Was mache ich falsch? Und woher weiß die
Function aus welchem Blatt sie die Werte holen muß?
Vielen Dank für die Hilfe
Gruß Hermann
Hier der Code
Function Werkzeug() As String
Dim koststplatz As String, wkz As String
' Alle Fremdarbeitsgänge in den String "Werkzeug"
Werkzeug = ""
For a = 4 To 100
If is_kostst(Cells(a, 1).Value) Then
koststplatz = Cells(a, 1).Value
If platz(koststplatz) = 0 And is_kostst(Cells(a, 1).Value) And Cells(a, 9).Value > 0 Then
wkz = Cells(a, 2).Value
If InStr(wkz, "Stempel") > 0 Then wkz = Left$(wkz, InStr(wkz, "Stempel") - 1)
Werkzeug = Werkzeug + " + " + wkz
End If
End If
If Cells(a, 1).Value = "Summe Einmalkosten" Then a = 100
Next a
End Function
und die Unterfunktionen (sind aber unwichtig):
Function is_kostst(wert As String) As Boolean
is_kostst = False
If InStr(wert, "/") > 0 And Right$(wert, 1) <> "/" Then is_kostst = True
End Function
Function kostst(wert As String) As String
If InStr(wert, "/") > 0 Then
kostst = Left$(wert, InStr(wert, "/") - 1)
Else
kostst = wert
End If
End Function
Function platz(wert As String) As String
If InStr(wert, "/") > 0 Then
platz = Mid$(wert, InStr(wert, "/") + 1)
Else
platz = 0
End If
End Function