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

Forumthread: VBA - String als Formel verwenden

VBA - String als Formel verwenden
25.11.2015 09:36:07
Rigo
Hallo Zusammen,
ich arbeite noch nicht lange mit VBA und bin auf diesem Gebiet sozusagen "Fresh Meat".
Und kurz; JA, ich habe bereits Google benutzt und Foren durchsucht. Leider suche ich wohl falsch.
Ich bitte um Unterstützung bei folgendem Problem:
Ich rufe den Inhalt einer Zelle in VBA auf und schreibe diesen in einen String. Der Zelleninhalt soll eine mathematische Formel darstellen, welche mit Operatoren wioe "/" oder "+" arbeitet. Der Zelleninhalt ist variabel und die Formel ändert sich hin und wieder.
Ich habe einen Wert (davor Zahl / Double ) und will auf diesen die Formel (Zelleninhalt / String) anwenden um einen anderen Wert (danachZahl / Double) zu bekommen. Die Typen sind unverträglich. Klar. Leider gelingt es mir immer noch nicht den Zelleninhalt als Formel in VBA anzuwenden.
Bitte um Hilfe. :)
Hier noch ein Code-Teil:

Option Explicit
Sub berechnungRaw()
Dim davorZahl As Double
Dim danachZahl As Double
Dim Formel As String
Dim rdpMenge As Integer
Dim zeileRech As Integer
Dim spalteRech As Integer
Dim zeileHol As Integer
Dim spalteHol As Integer
zeileRech = 4
spalteRech = 2
zeileHol = 2
spalteHol = 7
rdpMenge = Sheets("Rechentabelle").Cells(2, 11).Value
Debug.Print rdpMenge
Do While spalteRech 

Anzeige

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA - String als Formel verwenden
30.11.2015 10:42:56
fcs
Hallo Rigo Ros,
im Prinzip sollte es so funktionieren:
        danachZahl = davorZahl + Text2Formula(Formel)

Die Formel in Zeile 3 kann dann z.B. sein:
=3,6*$F$2*7/2
=3,6*7/2
Gruß
Franz
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

String als Formel in VBA verwenden


Schritt-für-Schritt-Anleitung

  1. Zelle auslesen: Zuerst musst du den Inhalt der Zelle, die die Formel enthält, in einen String speichern.

    Dim Formel As String
    Formel = Sheets("Rechentabelle").Cells(zeileHol, spalteHol).Value
  2. String in Formel umwandeln: Verwende eine Funktion, um den String als Formel zu interpretieren. Hier ist ein Beispiel, wie dies aussehen könnte:

    Function Text2Formula(ByVal Formel As String) As Double
       Text2Formula = Evaluate(Formel)
    End Function
  3. Berechnung durchführen: Jetzt kannst du die Formel auf deine Zahl anwenden.

    danachZahl = davorZahl + Text2Formula(Formel)
  4. Ergebnisse überprüfen: Stelle sicher, dass die Ergebnisse wie gewünscht angezeigt werden. Nutze Debug.Print, um das Ergebnis in der Konsole auszugeben.


Häufige Fehler und Lösungen

  • Fehler: Typenkonflikt: Wenn du versuchst, einen String direkt als Formel zu verwenden, kann es zu einem Typenkonflikt kommen. Stelle sicher, dass du den String zuerst in einen Double umwandelst, bevor du ihn verwendest.

  • Lösung: Nutze die Evaluate-Funktion, um den String als Formel zu interpretieren.

  • Fehler: Formel enthält ungültige Zeichen: Überprüfe, ob die Formel in der Zelle keine ungültigen Zeichen oder Formate enthält.

  • Lösung: Achte darauf, dass die Formel ordnungsgemäß formatiert ist, z.B. mit dem richtigen Dezimaltrennzeichen.


Alternative Methoden

Eine alternative Methode, um einen String in eine Formel umzuwandeln, ist die Nutzung von Excel-Funktionen direkt in VBA. Du kannst die Application.WorksheetFunction-Objekte verwenden, um Berechnungen durchzuführen, die auch auf Variablen basieren.

Dim Ergebnis As Double
Ergebnis = Application.WorksheetFunction.Sum(davorZahl, 5)

Praktische Beispiele

Hier ist ein einfaches Beispiel, wie du den Zelleninhalt, der eine mathematische Formel darstellt, verwenden kannst:

Sub BeispielBerechnung()
    Dim davorZahl As Double
    Dim danachZahl As Double
    Dim Formel As String

    davorZahl = 10
    Formel = "=3.5*$F$2*7/2"

    danachZahl = davorZahl + Evaluate(Formel)
    Debug.Print "Das Ergebnis ist: " & danachZahl
End Sub

Tipps für Profis

  • Fehlerbehandlung: Implementiere Fehlerbehandlungsroutinen, um sicherzustellen, dass dein Code auch bei ungültigen Formeln nicht abstürzt.
  • Debugging: Verwende Debug.Print, um den Inhalt der Variablen während der Ausführung zu überprüfen.
  • Modularität: Halte deinen Code modular, indem du Funktionen für wiederkehrende Berechnungen erstellst.

FAQ: Häufige Fragen

1. Wie kann ich einen String in einen Double umwandeln?
Du kannst die CDbl()-Funktion verwenden, um einen String in einen Double zu konvertieren:

Dim meineZahl As Double
meineZahl = CDbl("123.45")

2. Was ist die Evaluate-Funktion?
Die Evaluate-Funktion in VBA ermöglicht es dir, einen String als Formel auszuwerten. Dies ist besonders nützlich, wenn du Excel-Formeln in VBA verwenden möchtest.

3. Welche Excel-Version benötige ich?
Die hier beschriebenen Funktionen sind in den meisten modernen Excel-Versionen verfügbar, einschließlich Excel 2010 und neuer.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige