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

Forumthread: Formel in Zelle mit VBA einfügen mit Variable

Formel in Zelle mit VBA einfügen mit Variable
05.02.2018 11:25:20
Andy
Hallo mal wieder eine Frage,
wie kann ich eine Formel per VBA an eine Zelle übergeben, die auch Variablen enthält?
Soweit funktioniert es ohne Variable.
Tabelle1.Cells(letztezeile + 1, 1).FormulaLocal = "=X1"
Jetzt ergibt sich aber aus der Variable i das X
Tabelle1.Cells(letztezeile + 1, 1).FormulaLocal = "=(i)1"
Wie muss die Formel dann richtig heissen, damit sich die Formel hinterher mit der Variable i individuell ausgibt. i wird zuvor mit Target.Column gefüttert.
Anzeige

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Formel in Zelle mit VBA einfügen mit Variable
05.02.2018 11:27:36
Sepp
Hallo Andy,

Tabelle1.Cells(letztezeile + 1, 1).FormulaLocal = "=" & Cells(1, i).Address(0, 0)
Gruß Sepp

AW: Formel in Zelle mit VBA einfügen mit Variable
05.02.2018 12:01:07
Andy
=#BEZUG!
bekomme dann leider immer diese Fehlermeldung als Formel in der Zeile
Anzeige
AW: Formel in Zelle mit VBA einfügen mit Variable
05.02.2018 12:05:32
Sepp
Hallo Andy,
dann wirst du schon mehr Infos geben müssen!
Welchen Wert hat 'letzteZeile'?
Welchen Wert hat 'i'?
Gruß Sepp

AW: Formel in Zelle mit VBA einfügen mit Variable
05.02.2018 12:09:53
Andy
i= Target.column
das Target wird auf Arbeitsblatt tabelle1 entnommen.
letztezeile = Tabelle4.UsedRange.SpecialCells(xlCellTypeLastCell).Row
die Einträge selbst funktionieren mit der Variable letztezeile...zb durch
Tabelle4.Cells(letztezeile + 1, 3).Value = e
Ich habe eben lediglich das Problem, dass die Formel nicht richtig übernommen wird.
Anzeige
AW: Formel in Zelle mit VBA einfügen mit Variable
05.02.2018 12:12:39
Sepp
Hallo Andy,
also bei mir funktioniert der Code, ich kann aber nicht wissen, wie dein gesamter Code aussieht?
Gruß Sepp

AW: Formel in Zelle mit VBA einfügen mit Variable
05.02.2018 12:16:19
Andy
kann es vl daran liegen, dass das Format der Adressse dann falsch ist ? Also 1/24 nicht X1
Anzeige
Ratespiel? Zeig den gesamten Code! o.T.
05.02.2018 12:20:30
Sepp
Gruß Sepp

AW: Ratespiel? Zeig den gesamten Code! o.T.
05.02.2018 12:57:19
Andy

Private Sub Worksheet_Change(ByVal Target As Range)
'Benötigte Variablen einlesen und belegen - Public Variablen daher im Modul
i = Target.Column
j = Target.Row
If Target.Text = "WF" Then
Wert = MsgBox("Möchten Sie eintragen?", vbYesNo Or vbQuestion Or vbDefaultButton1, " _
Hinweis")
If Wert = vbNo Then
Target.Value = ""
Exit Sub
Else
letztezeile = Tabelle4.UsedRange.SpecialCells(xlCellTypeLastCell).Row
Tabelle4.Cells(letztezeile + 1, 5).FormulaLocal = "=" & Cells(8, i).Address(0, 0)
Tabelle4.Cells(letztezeile + 1, 8).Value = Format(Now, "DD.MM.YYYY hh:mm") & ", " &  _
Environ("Username")
End If
End If
End Sub

Anzeige
AW: Ratespiel? Zeig den gesamten Code! o.T.
05.02.2018 13:05:48
Sepp
Hallo Andy,
also mit der Code läuft.
Allerdings glaube ich, dass die Formel auf das Tabellenblatt in dem die Eingabe erfolgt verweisen soll, oder?
Microsoft Excel Objekt Tabelle2
Option Explicit 
 
Private Sub Worksheet_Change(ByVal Target As Range) 
  Dim i As Long, j As Long, letzteZeile As Long 
 
  i = Target.Column 
  j = Target.Row 
   
  On Error GoTo ErrorHandler 
  Application.EnableEvents = False 
  If Target.Text = "WF" Then 
    If MsgBox("Möchten Sie eintragen?", vbYesNo Or vbQuestion Or vbDefaultButton1, _
      " Hinweis") = vbNo Then 
      Target.Value = "" 
    Else 
      letzteZeile = Tabelle4.UsedRange.SpecialCells(xlCellTypeLastCell).Row 
      Tabelle4.Cells(letzteZeile + 1, 5).FormulaLocal = _
        "='" & Me.Name & "'!" & Cells(8, i).Address(0, 0) 
      Tabelle4.Cells(letzteZeile + 1, 8).Value = _
        Format(Now, "DD.MM.YYYY hh:mm") & ", " & Environ("Username") 
    End If 
  End If 
   
ErrorHandler: 
  Application.EnableEvents = True 
End Sub 
 

VBA/HTML-CodeConverter, AddIn für Office 2002-2016 - in VBA geschrieben von Lukas Mosimann. Projektbetreuung:RMH Software & Media

Code erstellt und getestet in Office 16 - mit VBAHTML 12.6.0

Gruß Sepp

Anzeige
AW: Ratespiel? Zeig den gesamten Code! o.T.
05.02.2018 13:41:58
Andy
Also er kommt mit der Formel einfach nicht klar. ....
Meine Variablen hatte ich zuvor als Public-Variablen deklariert, da ich die noch in ein paar anderen Bereichen benötige.
Also in einem Modul als:
Public i$
Public j$
Es kommt immer Laufzeitfehler 1004: Anwendungs pder objektdefinierter Fehler.
Anzeige
AW: Ratespiel? Zeig den gesamten Code! o.T.
05.02.2018 13:43:36
Sepp
Hallo Andy,
dann wirst du wohl die komplette Datei hochladen müssen.
Gruß Sepp

AW: Ratespiel? Zeig den gesamten Code! o.T.
05.02.2018 14:12:49
Andy
Ich habs. Die deklarierung der Variable heisst nicht Public i$ sonder Public i as long
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Formel in Zelle mit VBA einfügen und Variablen nutzen


Schritt-für-Schritt-Anleitung

  1. VBA-Editor öffnen:

    • Drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Modul erstellen:

    • Klicke mit der rechten Maustaste auf "VBAProject (dein Dokument)" und wähle Einfügen -> Modul.
  3. Code einfügen:

    • Kopiere den folgenden Code in das Modul:
    Public Sub FormelInZelleEinfügen()
       Dim i As Long
       Dim letztezeile As Long
       Dim ws As Worksheet
    
       Set ws = ThisWorkbook.Sheets("Tabelle1") ' Ändere den Namen nach Bedarf
       i = 2 ' Beispielwert für die Spalte
       letztezeile = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
    
       ws.Cells(letztezeile + 1, 1).FormulaLocal = "=" & ws.Cells(1, i).Address(0, 0)
    End Sub
  4. Makro ausführen:

    • Drücke F5, um das Makro auszuführen. Es wird eine Formel in die nächste freie Zeile in Spalte 1 eingefügt, die sich auf die Zelle in der ersten Zeile und der Spalte i bezieht.

Häufige Fehler und Lösungen

  • Fehler: #BEZUG!:

    • Ursache: Die angegebene Zelle existiert nicht. Überprüfe den Wert von i und stelle sicher, dass die entsprechende Zelle vorhanden ist.
  • Laufzeitfehler 1004:

    • Ursache: Überprüfe die Deklaration der Variablen. Stelle sicher, dass du die Variablen korrekt als Long oder String deklariert hast, z. B. Public i As Long.
  • Fehlerhafte Adressierung:

    • Stelle sicher, dass du die richtige Arbeitsblattreferenz verwendest und das Zielblatt existiert.

Alternative Methoden

  • Formel direkt in Zelle schreiben:

    • Du kannst auch die Formula-Eigenschaft anstelle von FormulaLocal verwenden, wenn du mit englischen Formeln arbeitest:
    ws.Cells(letztezeile + 1, 1).Formula = "=A1"
  • Nutzung von Range:

    • Anstatt Cells zu verwenden, kannst du auch Range nutzen:
    ws.Range("A" & letztezeile + 1).FormulaLocal = "=" & ws.Cells(1, i).Address(False, False)

Praktische Beispiele

  1. Formel mit summieren:

    ws.Cells(letztezeile + 1, 1).FormulaLocal = "=SUM(B1:B" & letztezeile & ")"
  2. Bedingte Formatierung:

    • Füge eine Formel für die bedingte Formatierung hinzu, die auf den Wert einer Zelle reagiert.
  3. Verwendung mehrerer Variablen:

    Dim j As Long
    j = 3 ' Beispiel für eine andere Spalte
    ws.Cells(letztezeile + 1, 2).FormulaLocal = "=" & ws.Cells(1, i).Address(0, 0) & "+" & ws.Cells(1, j).Address(0, 0)

Tipps für Profis

  • Verwende Option Explicit:

    • Dies zwingt dich, alle Variablen zu deklarieren, was Fehler reduziert.
  • Debugging:

    • Nutze Debug.Print, um den Wert von Variablen zur Laufzeit zu überprüfen.
  • Fehlerbehandlung:

    • Implementiere Fehlerbehandlungsroutinen, um Laufzeitfehler elegant zu handhaben:
    On Error Resume Next
    ' Dein Code hier
    On Error GoTo 0

FAQ: Häufige Fragen

1. Wie kann ich eine Formel mit mehreren Variablen erstellen? Du kannst mehrere Variablen in deiner Formel kombinieren, indem du sie innerhalb der Anführungszeichen mit & verbindest.

2. Was ist der Unterschied zwischen Formula und FormulaLocal? Formula verwendet die englische Syntax, während FormulaLocal die Spracheinstellungen deines Excel berücksichtigt. Wähle die Methode, die zu deinem Excel passt.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige