Autor: Peter Haserodt --- Aus Excel VBA - Gruppe:
VerschiedenesSpielerei 1: Benutzte Excel Funktionen in einer Arbeitsmappe
Autor: Peter Haserodt - Erstellt: -- - Letzte Revision: --
Benutzte Funktionen in einer Arbeitsmappe
Eine kleine Spielerei, um
alle benutzten Excel Funktionen in einer Arbeitsmappe zu ermitteln.
Hinweis: Der Code kann sicherlich noch etwas verfeinert werden, dies überlasse ich aber Ihnen.
Was brauchen Sie dafür?
Nun, erstellen Sie eine neue Mappe mit 2 Tabellenblättern.
Nennen Sie das erste Tabellenblatt
Output und das zweite Tabellenblatt
Funk
(Sie können dies natürlich später ändern und den Code entsprechend anpassen)
Nun müssen Sie noch nach der Datei
VBALISTE.XLS
auf Ihrer Festplatte suchen.
Öffnen Sie diese und wählen Sie dort das Blatt Tabellenfunktionen.
Kopieren Sie nun die Deutschen Funktionen beginnend mit der ersten Funktion (Abrunden) in die Tabelle Funk, beginnend in A1, diese sieht dann etwa so aus: Ausschnitt:
|
Funk |
| A | 1 | ABRUNDEN | 2 | ABS | 3 | ACHSENABSCHNITT | 4 | ADRESSE | 5 | ANZAHL | 6 | ANZAHL2 | 7 | ANZAHLLEEREZELLEN | |
|
Jetzt können sie die VBAListe.xls wieder schließen.
Fügen Sie nun ein allgemeines Modul in Ihre Mappe:
Option Explicit
'Code Peter Haserodt 2005
' !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
'Vorbemerkung
'DieseArbeitsmappe benötigt:
'Tabellenblatt funk in welchem beginnend in A1 die Funktionen nach unten aufgelistet sind (kannn man aus VBAliste.xls holen)
'Tabellenblatt output -> dort wird ausgegeben, kann man anpassen
' !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Dim fFormelFeld As Variant
Dim oSuchRange As Range, sFormlString As String
Dim iAnz As Integer
Public Sub HolDieFormeln()
'Code Peter Haserodt 2005
Dim oZiel As Worksheet, iFormelCount As Long
Dim s As String, iCount As Byte, k As Long, iZeitCount As Long, oRa As Range
Dim oFormelRange As Range, oQuellMappe As Workbook, g As Worksheet
Redim fFormelFeld(400) ' Nur so, sollte reichen, gegebenenfalls erhöhen
sFormlString = "|"
iAnz = 0
iFormelCount = 0
Set oZiel = ThisWorkbook.Sheets("output")
Set oQuellMappe = ActiveWorkbook ' Entsprechend Anpassen
Set oSuchRange = ThisWorkbook.Sheets("funk").Range("A1").CurrentRegion
For Each g In oQuellMappe.Worksheets
On Error Resume Next
Set oFormelRange = g.Cells.SpecialCells(xlCellTypeFormulas)
On Error GoTo 0
If Not oFormelRange Is Nothing Then
For Each oRa In oFormelRange
iFormelCount = iFormelCount + 1
FuncInFormel oRa.FormulaLocal
Next oRa
End If
Set oFormelRange = Nothing
Next g
oZiel.Cells.Clear
oZiel.Range("a1:a401").Value = WorksheetFunction.Transpose(fFormelFeld) ' Lazy
oZiel.Range("a1").Value = oQuellMappe.Name
End Sub
Private Function FuncInFormel(DieFormel As String)
'Code Peter Haserodt 2005
Dim i As Integer, bHoch As Boolean, iKlammer As Integer, sMid As String
Dim sZ As String, sOut As String
For i = Len(DieFormel) To 1 Step -1
sZ = Mid(DieFormel, i, 1)
If sZ = """" Then
If bHoch Then
bHoch = False
Else
bHoch = True
End If
Else ' Nich bh
If Not bHoch Then
If iKlammer > 0 Then
Select Case Asc(LCase(sZ))
Case 48 To 57, 97 To 122, 246, 252, 228, 223
Case Else
sMid = Mid(DieFormel, i + 1, iKlammer - i - 1)
If InStr(1, sFormlString, "|" & sMid & "|", vbTextCompare) = 0 Then
If Not (oSuchRange.Find(sMid, lookat:=xlWhole) Is Nothing) Then
sFormlString = sFormlString & sMid & "|"
iAnz = iAnz + 1
fFormelFeld(iAnz) = sMid
End If
End If
iKlammer = 0
If sZ = "(" Then iKlammer = i
End Select
Else
If sZ = "(" Then
Select Case Asc(LCase(Mid(DieFormel, i - 1, 1)))
Case 48 To 57, 97 To 122, 246, 252, 228, 223
iKlammer = i
End Select
End If
End If
End If
End If
Next i
End Function
Öffnen Sie nun eine Arbeitsmappe mit Formeln.
Diese muss die aktive Arbeitsmappe sein. (Dies können Sie sich dann selbst im Code anpassen)
Nach Start der Prozedur Public Sub HolDieFormeln()
werden die Funktionen in das Tabellenblatt Output geschrieben.
Selbstverständlich können Sie sich den Code anpassen und dynamisieren.
Dies überlasse ich dann aber Ihnen (Auch zusätzliche Funktionen noch mit aufzunehmen, z.B. Analysefunktionen etc... dafür müssen Sie einfach nur die Funktionsliste erweitern).
Weitere Artikel der Gruppe: Verschiedenes Aus Excel VBA
Nach oben