Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: excel formel durch wert ersetzen vba

excel formel durch wert ersetzen vba
22.12.2017 10:23:09
Helmut
Schönen Vormittag VBA'ler
ich habe folgenden Code im Internet gefunden.
  • 
    Private Sub Worksheet_Calculate()
    Dim objCell As Range
    For Each objCell In Range("M2:M14")
    If objCell.HasFormula Then _
    If IsNumeric(objCell.Text) Then _
    If Fix(objCell.Value) = objCell.Value Then _
    objCell.Value = objCell.Value
    Next
    End Sub
    

  • Dieser löscht in einem vordefinierten Bereich die Formel und gibt das Ergebnis der Formel in der Zelle ein.
    Mein Problem, mein Ergebnis der Berechnung ist ein Text (zb.: "Falsch"). Hierbei funktioniert der Code nicht.
    Hat jemand eine Ahnung?
    LG Helmut
    Anzeige

    18
    Beiträge zum Forumthread
    Beiträge zu diesem Forumthread

    Betreff
    Datum
    Anwender
    Anzeige
    AW: excel formel durch wert ersetzen vba
    22.12.2017 10:30:30
    Sepp
    Hallo Helmut,
    warum nicht einfach
    
    Range("M2:M14") = Range("M2:M14").Value
    
    ?
    Gruß Sepp

    AW: excel formel durch wert ersetzen vba
    22.12.2017 10:35:48
    fcs
    Hallo Helmut,
    probiere es mit folgender Variante.
    ggf. muss die Prüfung des Zellwert angepasst werden.
    Bei meiner Variante wird die Formel umgewandelt, wenn das Formelergebnis verschieden von Leerstring ist.
    Gruß
    Franz
    Private Sub Worksheet_Calculate()
    Dim objCell As Range
    For Each objCell In Range("M2:M14")
    If objCell.HasFormula Then
    If objCell.Text  "" Then
    objCell.Value = objCell.Text 'oder = objCell.Value
    End If
    End If
    Next
    End Sub
    

    Anzeige
    AW: excel formel durch wert ersetzen vba
    22.12.2017 10:53:36
    Helmut
    Servus Sepp, Servus Franz
    vielen Dank für eure schnelle Hilfe, doch bei deinen Code lieber Franz wandelt es mir gleich den ganzen vordefinierten Bereich in die dortigen End-Ergebnisse um. Das sollte nicht der Sinn der Sache sein.
    Der Code den ich gepostet habe, dort wird nur die Zelle umgewandelt, wo eine Berechnung vor sich geht. Wenn möglich, möchte ich das beibehalten.
    Nochmals herzlichen Dank vorerst für eure Mithilfe
    LG Helmut
    Anzeige
    AW: excel formel durch wert ersetzen vba
    22.12.2017 10:46:45
    Werner
    Hallo Helmut,
    Lösungen hast du jetzt ja schon.
    Ob es aber tatsächlich das ist, was du willst/brauchst ist die Frage.
    Du nutzt das Calculate Ereignis deines Tabellenblattes. Dabei solltest du dir über eines im klaren sein. Dieses Ereignis löst aus, sobald irgendwo auf dem Tabellenblatt eine Berechnung ausgelöst wird. Die Betonung liegt auf irgendwo.
    Gibst du jetzt z.B. in Zelle A1 folgende Formel ein:=1+1, dann löst das Calculate Ereignis aus und deine Formeln im Bereich M2-M14 werden durch die jeweiligen Formelergebnisse ersetzt.
    Ob du das tatsächlich so willst/brauchst kannst aber nur du wissen.
    Gruß Werner
    Anzeige
    AW: excel formel durch wert ersetzen vba
    22.12.2017 12:00:50
    Helmut
    Servus Werner
    genau um das geht es, nur habe ich vor deiner Antwort schon festgestellt das das so nicht funktioniert.
    Weißt du hier einen Ausweg? Siehe noch einmal bei meinem letzten Thread nach! Da steht wie ich es mir gerne vorgestellt hätte.
    LG Helmut
    AW: excel formel durch wert ersetzen vba
    22.12.2017 18:45:35
    guenni
    Mit den Börsenbriefen wird den Leuten regelmäßig so viel Geld abgeluchst, dass man sich auch einen Profi vor Ort leisten kann!
    Hier muss beim Füllen der Eingabefelder der Datensatz identifiziert werden, und vom Change-Ereignis zurückgeschrieben werden.
    Anzeige
    AW: excel formel durch wert ersetzen vba
    23.12.2017 13:08:26
    Helmut
    Servus guenni
    Ich verstehe nur Bahnhof. Weiß überhaupt nicht was du damit meinst.
    Gibt es noch irgendwo die Möglichkeit mir zu helfen?
    LG Helmut
    Brauche bitte noch immer Hilfe
    25.12.2017 20:51:41
    Helmut
    Guten Abend VBA'ler
    Kann mir den niemand mehr helfen?
    Fröhliche Weihnachten wünscht Helmut
    AW: Brauche bitte noch immer Hilfe
    26.12.2017 01:11:33
    Sepp
    Hallo Helmut,
    so?
    ' **********************************************************************
    ' Modul: Tabelle1 Typ: Element der Mappe(Sheet, Workbook, ...)
    ' **********************************************************************

    Option Explicit

    Private Sub Worksheet_Calculate()
    Dim objCell As Object, objRange As Object

    On Error Resume Next
    Application.EnableEvents = False
    Set objRange = Range("M2:M14").SpecialCells(xlCellTypeFormulas)
    If Not objRange Is Nothing Then
      For Each objCell In objRange
        If objCell.Value <> "" Then objCell.Value = objCell.Value
      Next
    End If
    Application.EnableEvents = True
    End Sub

    Gruß Sepp

    Anzeige
    weitere Hilfe benötigt
    26.12.2017 09:39:33
    Helmut
    Guten Morgen Sepp
    Danke vorerst einmal für die Hilfe während der Feiertage, Leider komme ich nicht zum gewünschten Ergebnis.
    In meinem festgelegten Bereich M2:M14 ist jede Zelle mit einer wenn Formel ausgestattet. Wenn nun durch eine Berechnung eine Zelle in diesem Bereich verändert wird, soll nur diese Zelle anstatt der wenn Formel das Endergebnis haben alle anderen Zellen in diesem Bereich sollen trotzdem die "Wennformel" behalten.
    Ich bin sehr dankbar über eure Hilfe.
    LG Helmut
    Anzeige
    AW: weitere Hilfe benötigt
    26.12.2017 10:06:32
    Sepp
    Hallo Hellmut,
    ganau das macht mein Code! Allerdings hängt das von deiner Formel ab, solange du die nicht zeigst, knn ich dir nicht weiterhelfen.
    Gruß Sepp

    Hier die Formel
    26.12.2017 18:49:05
    Helmut
    Guten Abend Sepp
    hiermit sende ich dir meine „wennformel". In meiner Datei habe ich fast alle Zellen bzw. Bereiche mit Namen versehen. Ich hoffe, dass dies nicht das Problem sein wird.
    Vielen Dank vorerst noch einmal für deine Hilfe
    =WENN(UND(Überprüfung1=JAHR(DatumDerPrüfung);(QR_Code_Nr=Matrix2!$C3));StandsicherheitStabilität)
    LG Helmut
    Anzeige
    AW: Hier die Formel
    26.12.2017 19:40:48
    Sepp
    Hallo Helmut,
    das deine Formel FALSCH als Ergebnis liefert, solange die Bedingung nicht erfüllt ist, hättest du selber wissen müssen und den Code auch entsprechend anpassen können.
    ' **********************************************************************
    ' Modul: Tabelle1 Typ: Element der Mappe(Sheet, Workbook, ...)
    ' **********************************************************************

    Option Explicit

    Private Sub Worksheet_Calculate()
    Dim objCell As Object, objRange As Object

    On Error Resume Next
    Application.EnableEvents = False
    Set objRange = Range("M2:M14").SpecialCells(xlCellTypeFormulas)
    If Not objRange Is Nothing Then
      For Each objCell In objRange
        If objCell.Value <> False Then objCell.Value = objCell.Value
      Next
    End If
    Application.EnableEvents = True
    End Sub

    Gruß Sepp

    Anzeige
    Hilfeschrei
    26.12.2017 20:15:14
    Helmut
    Guten Abend
    Meine VBA Kenntnisse sind nicht so besonders, deshalb bin ich auf eure Hilfe angewiesen.
    Habe jetzt ein wenig herumprobiert, doch ohne Erfolg. Die Formel wird nicht gegen das Ergebnis ausgetauscht.
    Hilfe!!!!
    LG Helmut
    AW: Hilfeschrei
    26.12.2017 20:35:59
    Sepp
    Hallo Helmut,
    dann wirst du wohl eine Beispieldatei hochladen müssen, denn wenn ich die Situation nachbaue, dann funktioniert es!
    Gruß Sepp

    Anzeige
    Hier die Datei
    27.12.2017 18:46:21
    Helmut
    Servus Sepp
    Hier die Datei. Im Tabellenblatt „Leiter-Kontrollblatt“ sind Checkboxen. Wenn diese angehakt sind oder eben nicht, steht in der Zelle daneben (Spalte D) wahr oder falsch. Im Tabellenblatt "Matrix 2" sind ab "K3"überall Berechnungen mit „wenn Formeln“ die sich wenn die Check-Box angehakt ist, in das Endergebnis „wahr“ verwandeln soll, also die Formel löschen und nur "wahr" beinhalten.
    https://www.herber.de/bbs/user/118545.xlsm
    Jetzt schon herzlichen Dank für deine unermüdlichen Leistungen für mich
    LG Helmut
    Anzeige
    AW: Hier die Datei
    27.12.2017 19:29:10
    Sepp
    Hallo Helmut,
    also bei mir funktioniert der Code, allerdings nicht in K3 sondern in BY3, weil die Formeln in K3 nie WAHR ergibt.
    Habe in nur vom Bereich her angepasst.
    ' **********************************************************************
    ' Modul: Tabelle1 Typ: Element der Mappe(Sheet, Workbook, ...)
    ' **********************************************************************


    Option Explicit

    Private Sub Worksheet_Calculate()
    Dim objCell As Object, objRange As Object

    On Error Resume Next
    Application.EnableEvents = False
    Set objRange = Range("K3:CS10").SpecialCells(xlCellTypeFormulas, xlLogical)
    If Not objRange Is Nothing Then
      For Each objCell In objRange
        If objCell.Value = True Then objCell.Value = objCell.Value
      Next
    End If
    Application.EnableEvents = True
    End Sub

    Gruß Sepp

    Anzeige
    Alles Bestens
    28.12.2017 17:37:43
    Helmut
    Guten Abend Sepp
    Es funktioniert alles nach meinen Vorstellungen!!! Vielen herzlichen Dank für deine Hilfe und das während der Feiertage, ich wünsche dir und allen die sich an meinen Problem beteiligt haben einen guten Rutsch ins Jahr 2018, viel Gesundheit und Erfolg.
    LG Helmut
    ;

    Forumthreads zu verwandten Themen

    Anzeige
    Anzeige
    Anzeige
    Anzeige

    Infobox / Tutorial

    Excel-Formel durch Wert ersetzen mit VBA


    Schritt-für-Schritt-Anleitung

    Um eine Excel-Formel durch deren Ergebnis zu ersetzen, kannst du VBA verwenden. Hier ist ein einfacher Schritt-für-Schritt-Guide:

    1. Öffne den VBA-Editor:

      • Drücke ALT + F11 in Excel.
    2. Füge ein neues Modul hinzu:

      • Klicke mit der rechten Maustaste auf VBAProject (DeineDatei.xlsx) und wähle Einfügen -> Modul.
    3. Füge den Code ein:

      • Kopiere und füge den folgenden Code in das Modul ein:
      Private Sub Worksheet_Calculate()
         Dim objCell As Range
         For Each objCell In Range("M2:M14")
             If objCell.HasFormula Then
                 If objCell.Value <> "" Then
                     objCell.Value = objCell.Value
                 End If
             End If
         Next
      End Sub
    4. Schließe den VBA-Editor:

      • Drücke ALT + Q.
    5. Teste die Funktion:

      • Ändere einen Wert in den Zellen M2 bis M14 und beobachte, dass die Formel durch das Ergebnis ersetzt wird.

    Häufige Fehler und Lösungen

    • Fehler: Excel löst Formel nicht auf:

      • Stelle sicher, dass die Berechnungsoptionen in Excel auf Automatisch eingestellt sind. Gehe zu Formeln -> Berechnungsoptionen und wähle Automatisch.
    • Fehler: Der Code funktioniert nicht für Texte:

      • Wenn das Ergebnis einer Formel ein Text ist (z. B. "Falsch"), stelle sicher, dass die Bedingung im Code angepasst wird, um auch Texte zu berücksichtigen.
    • Fehler: Der gesamte Bereich wird ersetzt:

      • Achte darauf, dass dein Code nur die Zelle ersetzt, die eine Formel hat und deren Ergebnis nicht leer ist.

    Alternative Methoden

    Wenn du keine VBA-Lösungen verwenden möchtest, gibt es auch manuelle Optionen:

    • Excel-Funktion "Werte einfügen":

      1. Markiere die Zellen mit den Formeln.
      2. Kopiere die Zellen (STRG + C).
      3. Klicke mit der rechten Maustaste auf die Zielzelle und wähle Inhalte einfügen.
      4. Wähle Werte aus.
    • Excel-Formel automatisch durch Wert ersetzen:

      • Verwende die Tastenkombination STRG + C und danach STRG + ALT + V, um schnell die Werte einzufügen.

    Praktische Beispiele

    Hier sind einige Beispiele, wie du Formeln durch Werte ersetzen kannst:

    1. Einzelne Zelle ersetzen:

      • Um eine Formel in Zelle M2 durch das Ergebnis zu ersetzen, kannst du einfach den Wert in M2 kopieren und dann Inhalte einfügen -> Werte wählen.
    2. Ganze Spalte ersetzen:

      • Um alle Formeln in der Spalte M (z. B. M2:M14) durch ihre Ergebnisse zu ersetzen, kannst du den oben genannten VBA-Code verwenden.
    3. Formeln mit Bedingungen:

      • Du kannst auch Bedingungen in deinem VBA-Code hinzufügen, um nur bestimmte Formeln zu ersetzen, z. B. nur wenn das Ergebnis wahr ist.

    Tipps für Profis

    • Verwende xlCellTypeFormulas: Dies ermöglicht es, nur Zellen mit Formeln auszuwählen und zu bearbeiten.

    • Fehlerbehandlung: Implementiere Fehlerbehandlung im VBA-Code, um Abstürze bei leeren Zellen oder ungültigen Formeln zu vermeiden.

    • Schnellzugriffe: Lege Makros in der Symbolleiste für den Schnellzugriff ab, um den Prozess zu beschleunigen.


    FAQ: Häufige Fragen

    1. Wie kann ich alle Formeln in meinem Arbeitsblatt durch Werte ersetzen? Du kannst den folgenden VBA-Code verwenden:

    Sub AlleFormelnErsetzen()
        Cells.Replace What:="=", Replacement:="", LookAt:=xlPart
    End Sub

    2. Was passiert, wenn ich eine Formel durch einen Wert ersetze? Sobald du die Formel durch einen Wert ersetzt, wird die ursprüngliche Formel gelöscht und kann nicht mehr wiederhergestellt werden, es sei denn, du hast die Datei gespeichert oder zurückgesetzt.

    3. Kann ich VBA benutzen, um Formeln in bestimmten Zellen zu ersetzen? Ja, du kannst den Bereich in deinem VBA-Code anpassen, um nur bestimmte Zellen zu bearbeiten (z. B. Range("A1:A10")).

    4. Wie finde ich heraus, ob eine Zelle eine Formel enthält? Du kannst die Eigenschaft HasFormula verwenden, um zu überprüfen, ob eine Zelle eine Formel enthält.

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige