Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.04.2024 18:33:31
28.04.2024 18:25:12
28.04.2024 14:18:05
Anzeige
Archiv - Navigation
1920to1924
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
Inhaltsverzeichnis

Formel per VBA in einer Zelle ablegen

Formel per VBA in einer Zelle ablegen
23.02.2023 22:30:32
Julius
Ich habe da ein Problem und bin schon seit Stunden dabei dieses zu lösen. Vorgeschichte: in einer dynamischen Tabelle Namens "FoTaBel" werden Formeln in der Spalte B abgelegt Damit die Formeln keinen Fehler verursachen wurden diese mit einem Apostroph vor der Formel ausgestattet.
Ich möchte nun den umgekehrten Weg realisieren, aus dieser Tabelle "FoTaBel" die Formel einlesen, das Apostroph entfernen und dann wieder in die Zelle H1 im Arbeitsblatt :NK_Abschlag einschreiben.
Eigentlich funktioniert der Code der von ChatGPT stammt, aber da ist noch ein Fehler den selbst die KI nicht lösen kann: In der Eingabeleiste erscheint die Formel Korrekt zb :=Summe(A1:A10) in der Zelle H1 steht aber '#NAME? Und das ist der Fehler. Da sollte nun eigentlich die Formel drin stehen.
Die Codezeile ergebnis = Application.Evaluate(wsNK_Abschlag.Range("H1").formula) liefert mir diese Fehlermeldung: : ergebnis : Fehler 2029 : Variant/Error.
Kann mir da irgendjemand Helfen das das Script funktioniert ? Nachfolgend der ganze Code:
Sub letzteZeileInFoTaBel()
' Deklaration der Variablen
Dim wsFoTaBel As Worksheet
Dim wsNK_Abschlag As Worksheet
Dim letzteZeile As Long
Dim ergebnis As Variant
' Setzen der Arbeitsblätter
Set wsFoTaBel = ThisWorkbook.Worksheets("Tab_Formeln")
Set wsNK_Abschlag = ThisWorkbook.Worksheets("NK_Abschlag")
' Bestimmung der letzten Zeile in der Tabelle FoTaBel
letzteZeile = wsFoTaBel.Cells(Rows.Count, "A").End(xlUp).Row
' Auslesen der Formel aus der letzten Zeile in Spalte B und Entfernen des führenden Apostroph
Dim letzteFormel As String
letzteFormel = Replace(wsFoTaBel.Range("B" & letzteZeile).Value, "'", "")
' Schreiben der Formel in die Zelle H1 auf dem Arbeitsblatt NK_Abschlag
wsNK_Abschlag.Range("H1").formula = letzteFormel
' Überprüfen, ob die Zelle H1 ein gültiges Ergebnis enthält
On Error Resume Next
ergebnis = Application.Evaluate(wsNK_Abschlag.Range("H1").formula)
On Error GoTo 0
' Anzeige des Ergebnisses in einer MsgBox oder Fehlermeldung bei ungültigem Ergebnis
If IsNumeric(ergebnis) Then
MsgBox "Wert in H1: " & ergebnis
Else
MsgBox "Fehler: Zelle H1 enthält kein gültiges Ergebnis."
End If
End Sub

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Formel per VBA in einer Zelle ablegen
23.02.2023 22:53:26
ralf_b
naja das Script funktioniert nicht. Sonst hättest du hier nicht gefragt.
Und die Kombination von ChatGPT und kaum Excel/VBA Kenntnisse ist keine Gute.
ChatGPT kann dein Problem lösen, nur mußt du zuvor verstehen was du fragen mußt.
Und man muß gezielt nachfragen.
Ich weis zwar nicht was du genau vorhast und ob die Anpassung hier so passt ,aber du wirst das schon schaffen.
Sub letzteZeileInFoTaBel()
    ' Deklaration der Variablen
    Dim wsFoTaBel As Worksheet
    Dim wsNK_Abschlag As Worksheet
    Dim letzteZeile As Long
    ' Setzen der Arbeitsblätter
    Set wsFoTaBel = ThisWorkbook.Worksheets("Tab_Formeln")
    Set wsNK_Abschlag = ThisWorkbook.Worksheets("NK_Abschlag")
    ' Bestimmung der letzten Zeile in der Tabelle FoTaBel
    letzteZeile = wsFoTaBel.Cells(Rows.Count, "A").End(xlUp).Row
    
    With wsNK_Abschlag
        ' Schreiben der Formel in die Zelle H1 auf dem Arbeitsblatt NK_Abschlag
        .Range("H1").Formula = wsFoTaBel.Range("B" & letzteZeile).Formula
        ' Anzeige des Ergebnisses in einer MsgBox oder Fehlermeldung bei ungültigem Ergebnis
        If IsNumeric(.Range("H1")) Then
            MsgBox "Wert in H1: " & .Range("H1")
        Else
            MsgBox "Fehler: Zelle H1 enthält kein gültiges Ergebnis."
        End If
    End With
End Sub

Anzeige
AW: Formel per VBA in einer Zelle ablegen
24.02.2023 09:45:05
Julius
Danke für Ihre Rückmeldung. Der Code den sie mir zukommen lassen haben kann so nicht funktionieren, weil das Apostroph welches in der ausgelesen Formel vorangestellt ist, entfernt werden muss. Das ist in meinem Ursprungscode ja schon alles realisiert. Das einzige was dann nicht sauber funktioniert ist die Rückgabe an die Zelle H1 , was ich aber schon in der EIngangsfrage alles genau beschrieben habe.
AW: Formel per VBA in einer Zelle ablegen
24.02.2023 11:32:51
GerdL
Hallo Julius,
VBA spricht englisch, deine Formel deutsch.
Sub Unit()
Tabelle2.Range("A" & Rows.Count).End(xlUp) = "'" & "=SUMME(A1:A10)"
Tabelle1.Range("H1").FormulaLocal = Tabelle2.Range("A" & Rows.Count).End(xlUp).Text
End Sub
Gruß Gerd
Anzeige
AW: Formel per VBA in einer Zelle ablegen
24.02.2023 19:12:58
Julius
Danke für die Antwort. Was meint das VBA spricht Englisch meine Formel Deutsch ? Verstehe ich nicht ganz. Ich habe eine Excel Version in Deutsch, die versteht keine Englichen Formeln., Die Variablen die ich verwende sind zwar in Deutsch aber das spielt ja wohl keine Rolle, wenn die ordnungsgemäß deklariert sind.
Oder verstehe ich da etwas komplett falsch ?
AW: Formel per VBA in einer Zelle ablegen
24.02.2023 19:28:10
ralf_b
vba ist eine Programmiersprache .und die ist in englischer Sprache. Wenn du dir die Mühe machen würdest dir die Eigenschaften einer Range anzusehen ,dann fällt dir auf das dort formula, formualocal, lormular1c1 usw. steht. Die englischen Arbeitsblattfunktionen schreibst du in formula. die deutschen in formulalocal.
Anzeige
AW: Formel per VBA in einer Zelle ablegen
24.02.2023 20:34:33
Julius
Hallo Ralf_b,
Vielen Dank für den Hinweis bzgl. Formula usw.
Ich habe nun die betreffende Zeile auf FormulaLocal geändert, und nun arbeitet das Script im ersten Test fehlerfrei.

313 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige