Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
404to408
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
404to408
404to408
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Auskommentierte Formeln per VBA prüfen

Auskommentierte Formeln per VBA prüfen
Timo
Hallo Zusammen!
Ich habe gerade folgendes Problem:
Ich möchte in einem VBA Skript alle möglichen Formeln eines Dokuments durchgehen. Das Skript erkennt dadurch eine Formel wenn das erste Zeichen der Zelle ein Gleichheitszeichen ist ("="), danach wird die Formel näher untersucht, was aber hier nicht weiter von Belang ist.
Ich habe nämlich momentan bereits Probleme beim Erkennen der Formeln. Sicher wißt Ihr das man mit einem einfachen Hochkommata vor dem Gleichheitszeichen das Gleichheitszeichen auch an den Anfang einer Zelle (halt direkt nach dem Hochkommata) reinschreiben kann um es als Text darzustellen und nicht als Formel interpretieren zu lassen. Wenn mein Skript nun auf solche Zellen steht, ist es aber felsenfest der Meinung das es sich doch um eine Formel handelt. Als ich mal durchdebugged habe fiel mir auf, das bei den entsprechenden Zellen in den Eigenschaften cell.value und cell.formula das einfache Hochkommata schlichtweg fehlt und somit es für das Skript nicht zu unterscheiden ist von einer richtigen Formel. Das kann aber doch nicht wirklich so sein? - Da muss es doch bestimmt ein anderes Unterscheidungsmerkmal geben, irgend eine Eigenschaft über die ich noch nicht gestolpert bin? :-)
Könnt Ihr mir da weiterhelfen wie ich es rausfinde ob das Gleichheitszeichen eine Formel "einleitet" oder mit einem Hochkommata als Text verwendet wird?
Vielen Dank schon mal!
MfG,
Timo Steuerwald

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

Betreff
Benutzer
Anzeige
AW: Auskommentierte Formeln per VBA prüfen
Uwe
Hallo Timo,
bei mir funktioniert folgendes Beispiel:

Sub FormelnPruefen()
Dim Z As Range
For Each Z In ActiveSheet.Cells.SpecialCells(xlCellTypeFormulas, 23)
Debug.Print Z.Address
Next Z
End Sub

Gruß Uwe
AW: Auskommentierte Formeln per VBA prüfen
Timo
Hallo Uwe!
Vielen Dank das klappt schon mal ziemlich gut! Ich gehe aber in allen Dateien alle Sheets durch, unabhängig davon, ob überhaupt eine Zelle genutzt wird oder nicht.
Also so in etwa:
Dim CellString As String
Dim cell As Range
For Each sheet In wbActualWorkbook.Sheets
If TypeName(sheet) = "Worksheet" Then
For Each cell In sheet.Cells.SpecialCells(xlCellTypeFormulas)
CellString = cell.Formula
Debug.Print "Address of Cell: "
Debug.Print cell.Address
ParseFunctions CellString
Next cell
End If
Next sheet
Dabei stolpert das Skript mir aber über leere Sheets in denen gar keine Zelle verwendet wird, da bekomme ich dann auch ein leeres Range Objekt von "For Each...". Wie kann ich also abfragen ob in einem Sheet überhaupt mindestens eine Zelle verwendet wird? Oder zumindest das von der For Each Schleife zurückgegebene Objekt näher untersuchen? Ich als alter Java Hase habe dann überprüft ob es ungleich Null ist:
If cell Null Then
was zwar der Kompiler so gefressen hat aber einen massiven Laufzeitfehler (Fehlernr. 13 "Typen unverträglich") ergab. Kann mir jemand hier den VisualBasic Weg für soetwas erklären?
Noch ne weitere Frage: Welche genaue Bedeutung hat denn Dein Parameter "23" beim Aufruf von ActiveSheet.Cells.SpecialCells(xlCellTypeFormulas, 23)?
Vielen Dank schon mal an Euch alle! Ihr seid sooooh gut!
MfG,
Timo Steuerwald
Anzeige
AW: Auskommentierte Formeln per VBA prüfen
Bert
23 ist die Addition von 1,2,4, und 16, das sind Konstanten für die 4
Formelarten Zahl, Text, Boolean, Fehler, also alle Formeln.
Du kannst z.B. mit:
c = application.counta(cells)
prüfen, ob mindestens eine Zelle einen Inhalt hat, ansonsten liefert
c = 0
Bert
AW: Auskommentierte Formeln per VBA prüfen
29.03.2004 11:00:49
Timo
Hallo Bert!
Habs mal ausprobiert, das rockt! Paßt perfekt, Danke!
MfG,
Timo

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige