Home Office-Hilfe.com - Wir lösen Ihr Problem mit Microsoft Excel, Word, Outlook, PowerPoint, Access gratis Forum Impressum

 [Sonstige] UDF gibt Fehler nach anderer Makro-Ausführung
Neues Thema eröffnenNeue Antwort erstellen
Autor Nachricht
RobOtter
Office-Hilfe.com-Neuling
Office-Hilfe.com-Neuling


Anmeldedatum: 13.04.2007
Beiträge: 5

BeitragVerfasst am: 22.06.2009, 15:26 Nach oben

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
Benutzer-Profile anzeigenPrivate Nachricht senden
maninweb
Office-Hilfe.com-Auskenner
Office-Hilfe.com-Auskenner


Anmeldedatum: 03.05.2008
Beiträge: 116
Wohnort: Herzogenrath

BeitragVerfasst am: 22.06.2009, 19:00 Nach oben

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ß
Benutzer-Profile anzeigenPrivate Nachricht sendenWebsite dieses Benutzers besuchen
RobOtter
Office-Hilfe.com-Neuling
Office-Hilfe.com-Neuling


Anmeldedatum: 13.04.2007
Beiträge: 5

BeitragVerfasst am: 23.06.2009, 08:34 Nach oben

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... Sad

Trotzdem, es hat mich sehr weiter gebracht, besten Dank nochmal!
Benutzer-Profile anzeigenPrivate Nachricht senden
Beiträge der letzten Zeit anzeigen:      
Neues Thema eröffnenNeue Antwort erstellen


Ähnliche Beiträge
Thema Autor Forum Antworten Verfasst am
Keine neuen Beiträge Tabelle nach Datum Diagart Microsoft Excel Hilfe 3 02.09.2010, 19:51 Letzten Beitrag anzeigen
Keine neuen Beiträge Nach Höhe des Wertes und Monaten zuor... Honka Microsoft Excel Hilfe 6 31.08.2010, 18:25 Letzten Beitrag anzeigen
Keine neuen Beiträge Makro für Zahlenanordnung gesucht... tobstein Microsoft Excel Hilfe 5 27.08.2010, 07:16 Letzten Beitrag anzeigen
Keine neuen Beiträge Daten aus Zwischenablage per Makro ei... schelmno.1 Microsoft Excel Hilfe 8 26.08.2010, 17:06 Letzten Beitrag anzeigen
Keine neuen Beiträge Makro zum löschen von Inhalten -DRINGEND Excelking Microsoft Excel Hilfe 2 26.08.2010, 16:09 Letzten Beitrag anzeigen


 Gehe zu:   



Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen

Haftungsausschluss/Disclaimer


SMS kostenlos versenden | Tuning Forum | krankenversicherungsvergleich | Wii Modchip Xbox 360 Konsole


Ranking-Hits



Powered by phpBB © 2001, 2002 phpBB Group :: FI Theme :: Alle Zeiten sind GMT + 1 Stunde
Deutsche Übersetzung von phpBB.de