Office: UDF gibt Fehler nach anderer Makro-Ausführung

Helfe beim Thema UDF gibt Fehler nach anderer Makro-Ausführung in Microsoft Excel Hilfe um das Problem gemeinsam zu lösen; Hallo, ich weiß nicht recht, wie ich das Problem kürzer umreißen soll. Folgendes Problem: Ich habe mir eine UDF geschrieben, die die Anzahl nicht... Dieses Thema im Forum "Microsoft Excel Hilfe" wurde erstellt von RobOtter, 22. Juni 2009.

  1. UDF gibt Fehler nach anderer Makro-Ausführung


    Hallo,

    ich weiß nicht recht, wie ich das Problem kürzer umreißen soll. Folgendes Problem:

    Ich habe mir eine UDF geschrieben, die die Anzahl nicht ausgeblendeter Zeilen in einem bestimmten Bereich zählt. Das tut auch und der Zellinhalt wird auch korrekt aktualisiert, wenn ich manuell Zeilen aus- oder einblende.
    Nun habe ich aber weiterhin ein Makro (wird per Button ausgelöst), welches Zeilen nach bestimmten Regeln aus- oder einblendet. Auch dieses Makro funktioniert einwandfrei, NUR:
    Wenn ich es ausführe, aktualisiert sich zwar auch der Zellinhalt mit der o.g. UDF, allerdings erhalte ich dann immer den Inhalt #WERT!
    Gebe ich die exakt gleiche Formel dort nochmal ein (bzw. klicke nur den Häckchen-Button neben dem Formel-Eingabefeld), wird die korrekte Anzahl Zeilen berechnet.

    Ich schließe daraus also, dass beide Makros korrekt sind, nur deren Zusammenspiel nicht. Was kann ich tun?

    Ach ja: In dem Makro zum Ein/Ausblenden wird die UDF nicht aufgerufen, die Aktualisierung der jeweils neu zu berechnenden Zelle(n) mit der UDF wird von Excel selbst angestoßen, fällt dann aber auf die Nase.
    Ich kann dieses Problem sowohl in einem Excel 2003 / SP3 als auch einem Excel 2007 / SP1 reproduzieren.

    Für alle Fälle füge ich mal die Sourcen an:

    Code:
    Option Explicit
    
    ' Blendet alle Zeilen aus, in denen abgelehnte oder abgesagte Kandidaten stehen,
    ' d.h. es bleiben nur die verfügbaren übrig
    Sub ausblenden()
        Dim zeile As Integer
        
        ' Finde die Zeilennummer, ab der die Kandidaten via Anzeige beginnen
        zeile = startKandAnzeige(1)
        
        ' Prüfe die Spalten 6 (F) und 8 (H)
        ' Wenn die Zelle leer ist, beende die Schleife
        Do Until Cells(zeile, 6).Value = ""
            If InStr(1, UCase(Cells(zeile, 6).Value), "NO", vbTextCompare) _
            Or InStr(1, UCase(Cells(zeile, 8).Value), "ABGESAGT", vbTextCompare) _
            Or InStr(1, UCase(Cells(zeile, 8).Value), "VERFÜGBAR", vbTextCompare) Then
                Rows(zeile).EntireRow.Hidden = True
            Else
                Rows(zeile).EntireRow.Hidden = False
            End If
            zeile = zeile + 1
        Loop
        
        ' Finde die Zeilennummer, ab der die Kandidaten via Personal-Agenturen beginnen
        zeile = startKandPA(zeile)
        
        ' Prüfe die Spalten 6 (F) und 8 (H)
        ' Wenn die Zelle leer ist, beende die Schleife
        Do Until Cells(zeile, 6).Value = ""
            If InStr(1, UCase(Cells(zeile, 6).Value), "NO", vbTextCompare) _
            Or InStr(1, UCase(Cells(zeile, 8).Value), "ABGESAGT", vbTextCompare) _
            Or InStr(1, UCase(Cells(zeile, 8).Value), "VERFÜGBAR", vbTextCompare) Then
                Rows(zeile).EntireRow.Hidden = True
            Else
                Rows(zeile).EntireRow.Hidden = False
            End If
            zeile = zeile + 1
        Loop
    End Sub
    
    ' Blendet alle Zeilen wieder ein
    Sub einblenden()
        Dim zeile As Integer
        
        ' Finde die Zeilennummer, ab der die Kandidaten via Anzeige beginnen
        zeile = startKandAnzeige(1)
        
        ' Prüfe die Spalte 6 (F)
        ' Wenn die Zelle leer ist, beende die Schleife
        Do Until Cells(zeile, 6).Value = ""
            Rows(zeile).EntireRow.Hidden = False
            zeile = zeile + 1
        Loop
        
        ' Finde die Zeilennummer, ab der die Kandidaten via Personal-Agenturen beginnen
        zeile = startKandPA(zeile)
        
        ' Prüfe die Spalte 6 (F)
        ' Wenn die Zelle leer ist, beende die Schleife
        Do Until Cells(zeile, 6).Value = ""
            Rows(zeile).EntireRow.Hidden = False
            zeile = zeile + 1
        Loop
    End Sub
    
    ' Finde die Zeilennummer, ab der die Kandidaten via Anzeige beginnen
    ' Dazu wird in Spalte 1 (A) nach dem genauen String der Überschrift gesucht
    ' Eingabe: Die Zeilennummer, ab der gesucht werden soll
    ' Rückgabewert: Die Zeilennummer direkt nach der Überschriftszeile
    Function startKandAnzeige(zeile)
        Do Until Cells(zeile, 1).Value = "Kandidaten über Anzeige"
            zeile = zeile + 1
        Loop
        zeile = zeile + 1 ' Überspringe nun die Kopfzeile
        
        startKandAnzeige = zeile
    End Function
    
    ' Finde die Zeilennummer, ab der die Kandidaten via PA beginnen
    ' Dazu wird in Spalte 1 (A) nach dem genauen String der Überschrift gesucht
    ' Eingabe: Die Zeilennummer, ab der gesucht werden soll
    ' Rückgabewert: Die Zeilennummer direkt nach der Überschriftszeile
    Function startKandPA(zeile)
        Do Until Cells(zeile, 1).Value = "Kandidaten über Personal-Agenturen"
            zeile = zeile + 1
        Loop
        zeile = zeile + 1 ' Überspringe nun die Kopfzeile
        
        startKandPA = zeile
    End Function
    
    ' Zählt alle eingeblendeten Zeilen
    Function CountVisible(myCells As Range) As Integer
        CountVisible = 0
        Dim loopCount As Integer
        Dim firstRow As Integer
        Dim column As Integer
        
        loopCount = 0
        column = myCells.column
        firstRow = myCells.Row
        
        Do Until loopCount = myCells.Rows.Count
            If Cells(firstRow + loopCount, column).EntireRow.Hidden = False Then
                CountVisible = CountVisible + 1
            End If
            loopCount = loopCount + 1
        Loop
    End Function
    
     
    RobOtter, 22. Juni 2009
    #1
  2. maninweb
    maninweb MVP für Microsoft Excel
    Hi RobOtter...

    versuche mal folgendes...
    Code:
    Sub ausblenden()
      
      Dim zeile As Integer
       
      Application.Calculation = xlCalculationManual
      
    ' :
    ' :
    ' Dein Code wie vorher
    ' :
    ' :
      
      Application.Calculation = xlCalculationAutomatic
      Application.Calculate
      
    End Sub
    
    Dasselbe auch in einblenden().

    Gruß
     
    maninweb, 22. Juni 2009
    #2
  3. Hallo maninweb,

    vielen Dank, das funzt auf Anhieb!
    Interessanterweise besteht das Problem nicht, wenn ich nicht einfach die ausgeblendeten Zeilen zähle, sondern nach den Regeln zähle, die zur Ausblendung führen. Das verstehe einer... :-(

    Trotzdem, es hat mich sehr weiter gebracht, besten Dank nochmal!
     
    RobOtter, 23. Juni 2009
    #3
Thema:

UDF gibt Fehler nach anderer Makro-Ausführung

Die Seite wird geladen...
  1. UDF gibt Fehler nach anderer Makro-Ausführung - Similar Threads - UDF Fehler Makro

  2. Wert Fehler

    in Microsoft Excel Hilfe
    Wert Fehler: Hallo zusammen, sicher gibt es schon diverse Beiträge, leider habe ich keinen gefunden, der mein Problem los. Ich habe mal einen Auszug meiner Tabelle angehängt. Leider kriege ich in einigen...
  3. Outlook Fehlermeldung 0x800CCC78, Nachricht kann nicht gesendet werden ...

    in Microsoft Outlook Hilfe
    Outlook Fehlermeldung 0x800CCC78, Nachricht kann nicht gesendet werden ...: Hallo, habe seit der Installation von MS Office 2021 Pro ein Problem mit Outlook, dass auch nach 3-maliger Neuinstallation und mit dem MFCMAPI-Tool die Fehlermeldung auch nicht verschwindet. Bin...
  4. UDF mit Range.Find funktioniert nicht

    in Microsoft Excel Hilfe
    UDF mit Range.Find funktioniert nicht: Hallo zusammen, ich habe herausgefunden, dass man mit UDFs eigene Funktionen für die Sheets schreiben kann. Nun habe ich mir ein paar Funktion in eine .xlma-Datei geschrieben und in den...
  5. 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...
  6. UDF in PQ

    in Microsoft Excel Hilfe
    UDF in PQ: Hallo Gemeinde, ist es möglich eine eigene UDF (hier:Eine Suchfunktion) in PQ (PowerQuery) heraus aufzurufen? Konkret schleif ich in Form eines Addins "übersetzungstabellen" mit mir rum. Der...
  7. LAMBDA()-UDF (ben.def. Tabellenfunktionen ohne VBA/xl4m)

    in Microsoft Excel Tutorials
    LAMBDA()-UDF (ben.def. Tabellenfunktionen ohne VBA/xl4m): LAMBDA()-UDF (ben.def. Tabellenfunktionen ohne VBA) Kurz nach LET kommt nun mit LAMBDA am 3.12.2020 die Vervollständigung der neuen 365-Microsoft-Welt (seit 7.2.2022 auch in XLWeb, also für jeden...
  8. VBA-UDF-Sammlung von Luc

    in Microsoft Excel Tutorials
    VBA-UDF-Sammlung von Luc: <b><font size="4">Einleitung</font></b> Luc macht sich seit Jahren darum verdient, VBA-Standardfunktionen zu erstellen und zu verbessern. Sie werden hier - ständig aktualisiert - gelistet und...
  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