Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema Werkzeug
BildScreenshot zu Werkzeug Werkzeug-Seite mit Beispielarbeitsmappe aufrufen

Function gibt nicht den aktuellen Wert

Betrifft: Function gibt nicht den aktuellen Wert von: Hermann
Geschrieben am: 30.08.2004 10:41:21

Hallo Excelfreunde,

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

  


Betrifft: AW: Function gibt nicht den aktuellen Wert von: Hans W. Hofmann
Geschrieben am: 30.08.2004 11:57:14

Deine Funktion hat keine Argumente, wird also nie neu berechnet, da nur Änderungen der Eingangswerte die Neuberechnung der Funktion auslösen.
Function Werkzeug(Bereich as range) As String
Dim koststplatz As String, wkz As String
' Alle Fremdarbeitsgänge in den String "Werkzeug"
Werkzeug = ""
For i=1 To Bereich.Count
    If If is_kostst(Bereich(i)) then


Gruß HW


  


Betrifft: AW: Function gibt nicht den aktuellen Wert von: Hermann
Geschrieben am: 30.08.2004 13:52:30

Vielen dank Hans,
hat super geklappt. Und wieder was gelernt :-)

Gruß Hermann


 

Beiträge aus den Excel-Beispielen zum Thema "Function gibt nicht den aktuellen Wert"