Anzeige
Archiv - Navigation
400to404
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
400to404
400to404
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

cells.replace

cells.replace
Sabine
Hallo,
ich suche einen code, der ´mir in einer neuen Datei in einem Arbeitsblatt alle Formlen auflistet, in einer anderen Datei (die auch geöffnet ist), welche einen Fehler haben........ am besten mit angabe des Tabellenblattes und der Zeile.....
Danke Euch!!!!
Sabine

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
falscher Betreff... richtig: Formeln
Sabine
AW: falscher Betreff... richtig: Formeln
22.03.2004 14:57:28
Axel
Hallo,
die Mappe mit den fehlerhaften Formeln selektieren und dann dieses Makro starten.


Option Explicit
Public Sub ListFormulaErrors()
   
   Dim blnFoundErrors As Boolean
   Dim lngRow As Long
   Dim rng As Range, rngError As Range
   Dim ws As Worksheet, wsTarget As Worksheet
   
   ' alle Tabellenblätter der aktiven Mappe durchlaufen
   For Each ws In Worksheets
   
      Set rngError = Nothing
      
      ' die SpecialCells-Methode liefert einen Laufzeitfehler, wenn keine
      ' Zellen gefunden werden, die dem Suchkriterium entsprechen
      ' deshalb wird die Fehlerbehandlung kurzfristig deaktiviert
      On Error Resume Next
      
      ' fehlerhafte Formeln ermitteln
      Set rngError = ws.Cells.SpecialCells( _
         Type:=xlCellTypeFormulas, Value:=xlErrors)
         
      ' normale Fehlerbehandlung wieder aktivieren
      On Error GoTo 0
      
      ' Fehler vorhanden?
      If (Not rngError Is NothingThen
      
         ' Ausgabemappe schon erzeugt?
         If (Not blnFoundErrors) Then
            ' nein, dann neu anlegen
            Workbooks.Add
            blnFoundErrors = True
            
            ' Kopfzeile setzen
            With Range("A1:C1")
               .Value = Array("Blattname", "Zelladresse", "fehlerhafte Formel")
               .Font.Bold = True
            End With
            
            ' Zeilenzähler für Ausgabe initialisieren
            lngRow = 2
         End If
         
         ' alle fehlerhaften Zellen des jeweiligen Blattes durchlaufen
         For Each rng In rngError
            Cells(lngRow, 1) = ws.Name
            Cells(lngRow, 2) = rng.Address
            
            ' Prefix-Character voranstellen, dadurch wird die Formel als reiner
            ' Text interpretiert
            Cells(lngRow, 3) = "'" & rng.FormulaLocal
            lngRow = lngRow + 1
         Next
      End If
   Next
   
   If (Not blnFoundErrors) Then
      MsgBox "Die aktive Mappe enthält keine fehlerhaften Zellen!", vbInformation
   Else
      ' optimale Spaltenbreite einstellen
      Columns("A:C").AutoFit
   End If
   
End Sub


Gruß
Axel
Anzeige
AW: cells.replace
22.03.2004 14:31:25
Nepumuk
Hallo Sabine,
der Code kann in einer der Drei Tabellen stehen. Beim starten muss aber die Tabelle aktiv sein, die durchsuch werden soll.
Option Explicit Public Sub Formeln() Dim myWorksheet As Worksheet, myRange As Range Dim lngZeile1 As Long, lngZeile2 As Long With ActiveWorkbook For Each myWorksheet In .Worksheets For Each myRange In myWorksheet.UsedRange If myRange.HasFormula Then lngZeile1 = lngZeile1 + 1 Workbooks("Mappe2.xls").Worksheets(1).Cells(lngZeile1, 1) = myWorksheet.Name & " " & myRange.Address(0, 0) Workbooks("Mappe2.xls").Worksheets(1).Cells(lngZeile1, 2) = "'" & myRange.Formula If IsError(myRange) Then lngZeile2 = lngZeile2 + 1 Workbooks("Mappe3.xls").Worksheets(1).Cells(lngZeile2, 1) = myWorksheet.Name & " " & myRange.Address(0, 0) End If End If Next Next End With End Sub
Gruß
Nepumuk
Anzeige
AW: cells.replace
K.Rola
Hallo,
eine neue Mappe wird erzeugt und alle Formelfehler aus allen
geöffneten workbooks aufgelistet:
Option Explicit

Sub alle_Fehler()
Dim wb As Workbook, ws As Worksheet, Zelle As Range
Dim newWb As Workbook, lngCount As Long
Set newWb = Workbooks.Add(1)
For Each wb In Workbooks
For Each ws In wb.Worksheets
For Each Zelle In ws.UsedRange
If Zelle.HasFormula Then
If IsError(Zelle) Then
lngCount = lngCount + 1
With newWb.Sheets(1)
.Cells(lngCount, 1) = wb.Name
.Cells(lngCount, 2) = ws.Name
.Cells(lngCount, 3) = Zelle.Address(0, 0)
.Cells(lngCount, 4) = Zelle
End With
End If
End If
Next
Next
Next
End Sub

Gruß K.Rola
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige