Funktion in Excel-Makro

  • Excel

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von roddy.

    Funktion in Excel-Makro

    Ich habe folgendes Problem. Habe die unten aufgeführte Funktion programmiert und möchte diese nun mit Test(C14, C15, C16) aufrufen. Dann kommt immer die Fehlermeldung, dass ein "=" erwartet wird. Was ist der Fehler hierbei?

    Visual Basic-Quellcode

    1. Function Test(x As Excel.Range, y As Excel.Range, y As Excel.Range)
    2. If Worksheets("UpdateSteps").x.Value = True Then
    3. If Worksheets("UpdateSteps").y.Value = True Then
    4. Worksheets("UpdateSteps").y.Interior.ColorIndex = 4
    5. ElseIf Worksheets("UpdateSteps").z.Value = True Then
    6. Worksheets("UpdateSteps").y.Interior.ColorIndex = 4
    7. Worksheets("UpdateSteps").y.Value = True
    8. MsgBox "First the following selections have to be undone", vbOKOnly
    9. Else
    10. Worksheets("UpdateSteps").y.Interior.ColorIndex = 3
    11. End If
    12. Else
    13. Worksheets("UpdateSteps").y.Value = False
    14. MsgBox "Other steps have to be done first", vbOKOnly
    15. End If
    16. End Function


    Edit by Agent: VB-Tag eingefügt

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Agent“ ()

    [Worksheets("UpdateSteps").] ist überflüssig, [x.value] reicht völlig aus, da das Worksheet schon im Range drin ist. Und Value ist der Zelleninhalt, soll der wirklich boolsch true/false sein?
    Gruß, Agent Smith 8-)

    activeFlags = (lazy OR weary)

    Lemgo-Verschwörung | Mathematics | VB-Paradise in blau
    Ja, der soll wirklich boolsch sein, da ich in den Zellen True Oder False ausgebe(Hier wird abgefragt, ob eine Checkbox einen haken hat oder nicht). Hätte da noch ne weitere Frage, wie kann man denn die Zeile einer Checkbox abfragen?

    joethe23 schrieb:

    Dann kommt immer die Fehlermeldung, dass ein "=" erwartet wird.

    Das kommt wahrscheinlich daher, dass du "Test" als "Function" deklariert hast. Wenn man das dann einfach nur mit

    Visual Basic-Quellcode

    1. Test(...)
    aufruft, ist dies ja im Grunde nur der Rückgabewert der Funktion. Und der kann ja nicht einfach so für sich im Code stehen, man muss schon etwas damit machen (z. B. einer Variablen zuweisen, deshalb wird das "=" erwartet, oder ihn als Parameter einer Sub oder Function benutzen usw.).

    In VBA muss man eine Sub ohne Klammern aufrufen, also z. B.:

    Visual Basic-Quellcode

    1. Test xRange, yRange


    Wieso hast du eigentlich eine "Function" gemacht? Ich sehe nirgendwo in deinem Code, dass ein Rückgabewert zugewiesen wird.

    Außerdem ist mir aufgefallen, dass du bei den Parametern y zweimal deklariert hast, was auch zu einer Fehlermeldung führt.

    Zu der Sache mit der Checkbox: Du kannst ja die Top-Eigenschaft der Checkbox mit der Top-Eigenschaft von Zeilen vergleichen. Etwas besseres fällt mir gerade nicht ein.

    Falls du jedoch gemeint hast, welche Zelle den Wert der Checkbox wiedergibt, ist das die LinkedCell-Eigenschaft, also z. B.:

    Visual Basic-Quellcode

    1. Zelle = Tabelle1.CheckBox1.LinkedCell

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „roddy“ ()