Office: Function Sub und Makro

Helfe beim Thema Function Sub und Makro in Microsoft Excel Hilfe um das Problem gemeinsam zu lösen; Hallo zusammen. Ja, auch ich verzweifle gerade. Ich habe folgendes Problem: Da ich quasi ein Makro innerhalb einer Wenn-Dann-Bedingung starten möchte,... Dieses Thema im Forum "Microsoft Excel Hilfe" wurde erstellt von RHAGGY, 26. Januar 2022.

  1. RHAGGY Neuer User

    Function Sub und Makro


    Hallo zusammen.
    Ja, auch ich verzweifle gerade. Ich habe folgendes Problem: Da ich quasi ein Makro innerhalb einer Wenn-Dann-Bedingung starten möchte, muss ich den VBA Code in einer Function implementieren. Jedoch funktionieren dann nicht die Methoden, die aber in einer Sub funktionieren. Zeilen löschen mit der Methode delete funktioniert nicht. Ist wahrscheinlich leichter zu verstehen, wenn ich hier die beiden Arten mal angebe. Die Ausführung des Deletes in der Funktion funktioniert nicht. Die Function wird bei einer Wenn-Dann-Bedingung aufgerufen. Wenn ich aber den selben Befehl in einer Sub programmiere (als Makro) und dieses Makro aus dem Excel-Menü ausführe (mit Makro ausführen), dann geht das einwandfrei. Ich finde den Fehler nicht. Ich benutze übrigens Excel365.

    Das funktioniert nicht (wird ausgeführt, wenn die wenn-Bedingung wahr ist):
    Gilt auch für andere Methoden als nur Delete. Die funktionieren auch nicht, sondern nur in einer Prozedur (SUB).
    Die Funktion wird auf jeden Fall durchlaufen. Habe das mit dem Aufruf einer
    Messagebox geprüft.

    Function Verschieben()
    Range("B3").EntireRow.Delete
    End Function

    Und dieses funktioniert (ausgeführt über das Menü mit Makros ausführen)

    Sub test()
    Range("B3").EntireRow.Delete
    End Sub


    Das ist irgendwie echt ätzend.
    Würde mich freuen, wenn jemand den Grund dafür ausfindig macht.

    Danke und viele Grüße

    RHAGGY
     
  2. Lutz Fricke Erfahrener User
    Hallo Rhaggy,

    wo ist genau das Problem?
    Du kannst doch in ein If-Then-Abfrage ein zweites Makro aufrufen

    If.... then
    Call test
    End if

    Gruß,
    Lutz
     
    Lutz Fricke, 27. Januar 2022
    #2
  3. RHAGGY Neuer User
     
  4. Lutz Fricke Erfahrener User

    Function Sub und Makro

    ???
     
    Lutz Fricke, 27. Januar 2022
    #4
  5. RHAGGY Neuer User
    Hallo Lutz.

    Wenn ich die Prozedur (SUB) "Test()" aus der Function "Verschieben()" aufrufe, funktioniert das Löschen der Zeile auch nicht. Es gibt bestimmt irgendwo Excel-Einstellungen damit das funktioniert.
    Rufe ich die Prozedur (SUB) "Test()" über das Menü "Makros" auf und wähle dann "Makro ausführen", wird die dritte Zeile wie gewünscht gelöscht. Und es ist identisch der selbe Löschbefehl, sowohl in der Prozedur wie auch in der Funktion.

    Die Funktion kann ich nicht über das Excel-Menü "Makro ausführen" starten. Die Funktion wird dort überhaupt nicht angezeigt, weil sie scheinbar für Excel kein Makro ist.

    Viele Grüße

    RHAGGY
     
  6. RHAGGY Neuer User
    Es scheint so, als wäre Excel bei der VBA Programmierung einer Function (inklusive SUB-Aufrufen) in einem anderen Modus als wenn man mit VBA nur reine SUB-Prozeduren programmiert. SUB Prozeduren werden auch als Makros in der Liste aufgeführt. Funktionen erscheinen in der Makroliste überhaupt erst gar nicht.

    Viele Grüße und Danke für Deine Mühe
    RHAGGY
     
  7. RHAGGY Neuer User
    Hier sieht man mein Excel-Sheet mit der Wenn-Dann-Bedingung.
    Die Zeile 3 soll dann durch die Funktion Verschieben() gelöscht werden.
    Das passiert aber nicht. Führe ich aber das Makro test() manuell über das Menü aus,
    dann wird die dritte Zeile gelöscht, so wie es soll. :-(

    Function Sub und Makro upload_2022-1-27_10-32-2.png
     
  8. Beverly
    Beverly Erfahrener User

    Function Sub und Makro

    Hi,

    soweit ich weiß, führen Functions (zumindest wenn sie aus einer Formel heraus gestartet werden) keine Veränderungen an anderen Zellen aus als ausschließlich an der, aus der sie aufgerufen werden - somit kannst du damit auch keine ganzen Zeilen löschen.


    Function Sub und Makro GrußformelFunction Sub und Makro Beverly's Excel - Inn
     
    Beverly, 27. Januar 2022
    #8
  9. Lutz Fricke Erfahrener User
    ok, da habe ich deine Frage falsch verstanden...
    Über eine Funktion Zellen zu bearbeiten funktioniert scheinbar wirklich nicht.

    Aber dann nimm doch das Worksheet-Change-Event. Dort grenzt du über den Target und "fertig" ein, wann dein Makro ausgeführt wird, und schon läuft's.
    Code:
    Private Sub Worksheet_Change(ByVal Target As Range)
    
    If Not Intersect(Target, Cells(3, 1)) Is Nothing Then
        If Target.Value = "fertig" Then
            Range("B5").EntireRow.Delete
        End If
    End If
    
    End Sub
    
    Gruß,
    Lutz
     
    Lutz Fricke, 27. Januar 2022
    #9
  10. RHAGGY Neuer User
    Erst einmal vielen Dank an Euch Beide , Beverly und Lutz.
    Total lieb von Euch.

    Aber Beverly, da musst Du mir schon zustimmen, Sinn macht das nicht. Also wenn das so ist, wie Du schreibst, dann ist das aber mehr als ein dickes Minus an Microsoft. Eigentlich ein NoGo. Da kann man sich VBA ja ganz sparen.

    Und Lutz, vielen Dank, werde diesen Workaround mal ausprobieren. Das dauert wohl etwas. Melde mich aber auf jeden Fall, ob es funktioniert hat.

    Euch noch einmal lieben Dank. Ich finde echt Gefallen an diesem Forum und Fragen gibt es ja genug. smile
     
  11. Beverly
    Beverly Erfahrener User
    Nein, ich muss dir da gewiss nicht zustimmen Function Sub und Makro *;)*, denn zu entscheiden, ob das Sinn macht oder nicht, liegt nicht bei den Benutzern von Excel sondern einfach an der Definition, was etwas ist und was etwas machen kann. Hier mal eine Definition vom Begriff Tabellenblattfunktion (im allgemeinen Sprachgebrauch: Formel): "A function in Excel is a preset formula, that helps perform mathematical, statistical and logical operations". Eine Tabellenblattfunktion (bzw. Formel) ist also nur dazu da, um mathematische, statistische und logische Operationen durchzuführen, wobei fest vorgegeben ist, wie sie aussehen und was das Ergebnis sein soll. Eine VBA-function jedoch erweitert diese Möglichkeiten, sodass du eigene Rechenoperationen verwenden kannst, die Excel nicht standardmäßig bereitstellt - das gilt aber eben NUR für Rechenoperationen und NICHT für Veränderungen am Tabellenblatt. Du musst einfach verstehen, dass es zwei prinzipiell verschiedene Möglichkeiten gibt: Lösungen mittels Tabellenblattfunktionen (Formeln) und reinen VBA-Lösungen. Du musst eigentlich froh sein, dass mit VBA-functions eine Verbindung zwischen Tabellenblattfunktionen (Formeln) und reinem VBA hergestellt wurde, sodass du in der Zelle viel mehr machen kannst als nur mit Formeln alleine - VBA-functions sind also sozusagen eine Unterstützung für die Tabellenblattfunktionen (Formeln), aber nicht für Veränderungen am Tabellenblatt gedacht - dazu musst du "reines" VBA verwenden, wie in deinem Fall z.B. das Worksheet_Change-Ereignis.
    Ich hoffe, dass ich dein Verständnis dafür, dass und weshalb und warum du mit einer VBA-function dein Vorhaben nicht realisieren kannst, ein wenig verbessern konnte und weshalb das einfach logisch ist.


    Function Sub und Makro GrußformelFunction Sub und Makro Beverly's Excel - Inn
     
    Beverly, 27. Januar 2022
    #11
  12. Wolff68
    Wolff68 hat Ahnung
    Zitiert aus Erstellen benutzerdefinierter Funktionen in Excel
    Verwenden von VBA-Schlüsselwörtern in benutzerdefinierten Funktionen
     
    Wolff68, 30. Januar 2022
    #12
Thema:

Function Sub und Makro

Die Seite wird geladen...
  1. Function Sub und Makro - Similar Threads - Function Sub Makro

  2. Benutzerdefinierte Matrixfunktion (function) mit integrierten Arrayfunktionen

    in Microsoft Excel Hilfe
    Benutzerdefinierte Matrixfunktion (function) mit integrierten Arrayfunktionen: Hallo liebe Forumsmitglieder, nachdem ich nun schon einige Stunden nach einer Lösung im Netz und im Forum gesucht und selbst einiges probiert habe, wende ich mich nun mit folgender Frage an euch:...
  3. User Defined Functions (UDF) auch ohne VBA / Makro möglich ?

    in Microsoft Excel Hilfe
    User Defined Functions (UDF) auch ohne VBA / Makro möglich ?: Moin, Ich hab ne ganz einfache Frage, die sich wohl direkt mit Ja oder Nein beantworten läßt. Meine Tabelle ist 450 Zeilen hoch und 365 Spalten breit. *eek.gif* In jeder Zelle ist die gleiche...
  4. Solver aus function ohne worksheet-Berechnung?

    in Microsoft Excel Hilfe
    Solver aus function ohne worksheet-Berechnung?: hallo zusammen, nutze den solver für nichtlineare Fits, mit üblichen Weg der Berechnung der Abweichungsquadrate zwischen Soll- und Ist-Funktion, die via solver minimiert werden. Ganz einfaches...
  5. Fehler beim kompilieren sub oder Function nicht definiert

    in Microsoft Excel Hilfe
    Fehler beim kompilieren sub oder Function nicht definiert: Hallo zusammen erhalte Fehlermeldung: Fehler beim Kompilieren oder Function nicht definiert. übersehe ich etwas. (bin neuling) Bin dankbar für jede Unterstützung Private Sub cmdSpeichern_Click()...
  6. Function oder Sub

    in Microsoft Excel Hilfe
    Function oder Sub: Hallo zusammen, ich stehe grade vor einem Problem. Und zwar habe ich mir eine Funktion geschrieben, die etwas erledigen soll. Allerdings hat diese Funktion einen optional-wert. Hier zwei...
  7. Aufruf einer function in excel mit =modul.1.name

    in Microsoft Excel Hilfe
    Aufruf einer function in excel mit =modul.1.name: Hallo zusammen, ich habe in VBA eine z.b. eine simple function, mit dem Namen: sum für das aufsummieren der zahlen von 1 bis 100 programmiert. Diese function möchte ich nun in Excel aufrufen, in...
  8. Excel VBA - Unterschied zwischen Sub & Function (beides mit Werteübergabe im Aufruf)

    in Microsoft Excel Hilfe
    Excel VBA - Unterschied zwischen Sub & Function (beides mit Werteübergabe im Aufruf): Hallo Forum, in einem aktuellen Projekt (Excel 2010) beschäftige ich mich endlich mal mit dem Thema "Function mit Werteübergabe", um immer wiederkehrenden Code nur einmal schreiben zu müssen....
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden