Live-Forum - Die aktuellen Beiträge
Datum
Titel
19.04.2024 12:23:24
19.04.2024 11:45:34
Anzeige
Archiv - Navigation
952to956
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
952to956
952to956
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

VBA - Funktion erstzen

VBA - Funktion erstzen
22.02.2008 13:50:38
Uwe
Hallo,
ich habe in einem Tabellenblatt Formeln gesichert, indem ich vor das "=" ein "ABC" gesetzt habe.
Bisher hat es mir die Formeln jedes mal zerhagelt, wenn in einem anderen Tabellenblatt, auf das sich die Formel bezog, Zeilen hinzugefügt wurden.
Beispiel: Im Tabellenblatt14 Zeile A3 soll immer der Wert der Zelle B4 aus dem Tabellenblatt16 stehen, egal ob mittlerweile Zeilen eingefügt worden.
Um dieses Problem zu lösen, habe ich die Formeln wie oben beschrieben gesichert und kopiere diese in das Tabellenblatt14. Damit die Formeln scharfgeschaltet werden, muss nur noch das "ABC" entfernt werden. Manuell klappt das auch, nur per unten aufgeführten Makro nicht.

Sub umformatieren()
Tabelle14.Select
Cells.Replace What:="ABC=wenn(", Replacement:="=wenn(", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
End Sub


Kann mir jemand sagen, warum es nicht geht bzw. wie ich umsetzen kann.
Vielen Dank.
Grüße
Uwe

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA - Funktion erstzen
22.02.2008 14:04:00
Nepumuk
Hallo Uwe,
weil du in VBA den Wert als Value und nicht als Formula zurückschreibst. Da hilft nur eins:
Public Sub test2()
    Dim objCell As Range
    With Application
        .ScreenUpdating = False
        .EnableEvents = False
        .Calculation = xlCalculationManual
    End With
    For Each objCell In Tabelle1.Cells.SpecialCells(xlCellTypeFormulas)
        objCell.Value = "ABC" & objCell.Formula
    Next
    With Application
        .ScreenUpdating = True
        .EnableEvents = True
        .Calculation = xlCalculationAutomatic
    End With
End Sub

Public Sub test3()
    Dim objCell As Range
    With Application
        .ScreenUpdating = False
        .EnableEvents = False
        .Calculation = xlCalculationManual
    End With
    For Each objCell In Tabelle1.Cells.SpecialCells(xlCellTypeConstants)
        If Left$(objCell.Value, 4) = "ABC=" Then objCell.Formula = Mid$(objCell.Value, 4)
    Next
    With Application
        .ScreenUpdating = True
        .EnableEvents = True
        .Calculation = xlCalculationAutomatic
    End With
End Sub

Dauert bei 65.000 Formeln ~ 5 Sekunden auf meinem Rechner.
Gruß
Nepumuk

Anzeige
AW: VBA - Funktion erstzen
22.02.2008 15:16:00
Uwe
Hallo Nepumuk,
test2 läuft gut, jedoch bekomme ich bei test3 eine Fehlermeldung bei folgender Stelle:
If Left$(objCell.Value, 4) = "ABC=" Then objCell.Formula = Mid$(objCell.Value, 4)
(Typen unverträglich).
Könnest du mir hier nochmal auf die Sprünge helfen.
Gruß
Uwe

AW: VBA - Funktion erstzen
22.02.2008 15:23:00
Nepumuk
Hallo Uwe,
hast du Arrayformeln in der Tabelle? Ich hab das nämlich nur mit "einfachen" Formeln getestet. Oder steht da irgenwo absichtlich ABC= in einer Zelle?
Gruß
Nepumuk

AW: VBA - Funktion erstzen
22.02.2008 15:34:00
Uwe
Hallo Nepumuk,
ich habe in der Tat vor der Formel ein ABC platziert. Diese Fassung dient mir als Sicherung der Formeln.
Im aktiven Betrieb soll das "ABC" wieder wegfallen, damit die Formel wieder rechnen kann.
Eine Formel sieht z.B. wie folgt aus:
ABC=wenn($G$18=Einbuchung!K3;Einbuchung!A3;"")
Gruß
Uwe

Anzeige
AW: VBA - Funktion erstzen
22.02.2008 18:20:00
Nepumuk
Hallo Uwe,
ich kann den Fehler nicht nachvollziehen. Kannst du in deiner Tabelle sehen, bei welcher Formel das Programm aussteigt oder passiert das schon gleich bei der ersten?
Gruß
Nepumuk

AW: VBA - Funktion erstzen
22.02.2008 14:09:00
Renee
Hi Uwe,
Level Excel gut ?
Warum verwendest du nicht INDIREKT("B4") für die kritischen Formeln ?
GreetZ Renée

AW: VBA - Funktion erstzen
Nepumuk
Hallo Renée,
INDIREKT ist eine flüchtige Formel. Sie wird also bei jeder Änderung, egal in welcher Tabelle neu berechnet. Wenn du sehr viele davon in einer Mappe hast, kannst du nach dem drücken von Enter erst mal einen Kaffee trinken gehen bevor der Cursor in der nächsten Zelle angekommen ist. ;-)
Gruß
Nepumuk


Hi Nepumuk,
Darum hab ich auch geschrieben ...die kritischen Formeln , denn ich kann mir schlecht eine Tabellenstruktur vorstellen, bei der ich haufenweise an fixe Orte gebundene Informationen habe.
GreetZ Renée


nicht zu meinen favorisierten Flüssigkeiten.
Lieber einen "Rock Shandy". Renée ;-)


Hallo Renée,
das ist ja Fruchtsaft. Da sind bestimmt viele Vitamine drin. Nene, sowas kommt mir nicht ins Haus. Dann lieber eine Tee. Wobei ich Long Island Icetea am leckersten finde. Ich lass aber vorsichtshalber den O-Saft und die Zitrone weg. Aber auch ein Hopfentee aus der Weißbierbrauerei Unertl ist nicht zu verachten. Und da mir mein Arzt gesagt hat ich muss viel trinken, hab ich jetzt gleich eins eingeschenkt.
Prost
Nepumuk

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige