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

Forumthread: VBA-Formel mit Bezug auf aktuelle Zeile eintragen

VBA-Formel mit Bezug auf aktuelle Zeile eintragen
08.08.2018 11:27:15
Matto
Liebe Experten,
ich habe wieder eine "Herausforderung".
Ich möchte mit VBA eine Formel in eine Zelle eintragen. Als Zeilenwert soll dabei die aktuelle Zeile verwendet werden.
Die Zeile ermittele ich bereits in dem Sub
nRow = wsTest.Cells(Rows.Count, 2).End(xlUp).Row + 1
Das funktioniert auch.
Jetzt dachte ich, ich kann die nRow Variable einfach verwenden, bekomme es aber nicht zum laufen.
Cells(nRow, 5).Formula = "=Index(Y " & nRow & " : Z " & nRow & "; 1; SpracheIndex)"
Wenn es eine Formel dazu gibt, die aktuelle Zeile zu verwenden, ist mir das auch recht.
Also wenn ich in
E7 stehe, dann "=Index(Y7:Z7;1; SpracheIndex)"
E8 "=Index(Y8:Z8;1;SpracheIndex)" usw.
Ich Danke Euch im Voraus
Mat
Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Formula = ,(Komma) | nicht ; als Trenner (owT)
08.08.2018 11:35:35
EtoPHG

AW: VBA-Formel mit Bezug auf aktuelle Zeile eintragen
08.08.2018 11:46:28
daniel
Hi
wie schon geschrieben, bei .Formula musst du die Formel in englisch schreiben, dh englische Funktionsnamen (bei Index kein Unterschied) und das Komma als Parametertrennzeichen.
du kannst die Formel auch in deutsch schreiben, wenn du sie mit .FormulaLocal der Zelle übergibts.
Dann funktioniert dein Code aber nur auf einem deutschen Rechner.
das Problem mit der Zeilennummer löst man am einfachsten, indem man die R1C1- (in Deutsch Z1S1-) Adressierungsart für die Formel verendet.
dann sieht die Formel nämlich ganz einfach aus:
Cells(nRow, 5).FormulaR1C1 = "=Index(RC25:RC26,1,SpracheIndex)"
das C25 ist Spalte Y, das C26 ist Spalte Z
das R ohne Zeilennummer steht für: gleiche Zeile, in der die Formel steht.
oder nimm die Zeilennummer in die Formel mit auf:
Cells(nRow, 5).Formula = "=Index(Y:Z,Row(),SpracheIndex)"

Gruß Daniel
Anzeige
AW: VBA-Formel mit Bezug auf aktuelle Zeile eintragen
08.08.2018 12:38:54
Matto
Ich danke Euch für die schnellen Antworten.
Ich habe jetzt Daniels Vorschlag mit der "R1C1" Schreibweise verwendet und es funktioniert bestens.
Beste Grüße
Mat
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

VBA-Formel mit Bezug auf die aktuelle Zeile eintragen


Schritt-für-Schritt-Anleitung

  1. Aktuelle Zeile ermitteln: Du kannst die aktuelle Zeile in Excel mit VBA ermitteln, indem du den folgenden Code verwendest:

    nRow = wsTest.Cells(Rows.Count, 2).End(xlUp).Row + 1
  2. Formel in die Zelle eintragen: Um eine Formel in die Zelle einzufügen, nutze die Cells-Eigenschaft. Achte darauf, dass du die Formel in der richtigen Sprache schreibst:

    Cells(nRow, 5).Formula = "=Index(Y" & nRow & ":Z" & nRow & ", 1, SpracheIndex)"
  3. Alternative mit R1C1: Alternativ kannst du die R1C1-Adressierung verwenden, um auf die aktuelle Zeile zuzugreifen. Hier ist eine Beispielzeile:

    Cells(nRow, 5).FormulaR1C1 = "=Index(RC25:RC26, 1, SpracheIndex)"
  4. Verwendung des Row-Befehls: Eine weitere Möglichkeit ist die Verwendung der Row-Funktion:

    Cells(nRow, 5).Formula = "=Index(Y:Z, Row(), SpracheIndex)"

Häufige Fehler und Lösungen

  • Formelsyntax prüfen: Stelle sicher, dass du die richtige Syntax verwendest. Bei der Verwendung von .Formula musst du die Formel in Englisch schreiben. Wechsel zu .FormulaLocal, wenn du die Formel in Deutsch schreiben möchtest.

  • Falsche Trennzeichen: Achte darauf, dass du das korrekte Trennzeichen verwendest. In deutschen Versionen von Excel ist das Semikolon (;) anstelle von Komma (,) notwendig.

  • R1C1-Adressierung: Wenn du Schwierigkeiten mit Zeilenreferenzen hast, ist die Nutzung der R1C1-Adressierung oft einfacher, da sie sich auf die aktuelle Zeile bezieht, ohne dass die Zeilennummer angegeben werden muss.


Alternative Methoden

  • Excel-Formel in Zellen verwenden: Du kannst auch einfach eine Formel direkt in die Zelle eintragen, ohne VBA zu verwenden. Dazu kannst du die =INDEX(...)-Funktion manuell in die Zelle schreiben.

  • Nutzung von Excel-Funktionen: Darüber hinaus gibt es verschiedene Excel-Funktionen wie OFFSET, die dir helfen können, die aktuelle Zeile dynamisch zu ermitteln und in Formeln zu verwenden.


Praktische Beispiele

  1. Formel für Summen: Wenn du eine Summe der Werte in den Spalten Y und Z der aktuellen Zeile berechnen möchtest, könntest du die folgende Formel verwenden:

    Cells(nRow, 5).Formula = "=SUM(Y" & nRow & ":Z" & nRow & ")"
  2. Verwendung von ROW(): Um die aktuelle Zeilennummer zu verwenden, kannst du die ROW()-Funktion in deine Formel einfügen:

    Cells(nRow, 5).Formula = "=INDEX(Y:Z, ROW(), SpracheIndex)"

Tipps für Profis

  • Code modularisieren: Teile deinen VBA-Code in Module auf, um die Lesbarkeit und Wartbarkeit zu erhöhen.

  • Fehlerbehandlung implementieren: Verwende On Error GoTo, um mögliche Fehler abzufangen und deine Anwendung stabiler zu machen.

  • Eingabevalidierung: Stelle sicher, dass die Werte, die du in deine Formeln einfügst, validiert werden, um Fehler zu vermeiden.


FAQ: Häufige Fragen

1. Wie kann ich die aktuelle Zeilennummer in einer Formel verwenden?
Du kannst die Funktion ROW() verwenden, um die aktuelle Zeilennummer dynamisch in deiner Excel-Formel zu ermitteln.

2. Was ist der Unterschied zwischen .Formula und .FormulaLocal?
.Formula erwartet die Formel in Englisch, während .FormulaLocal die Formel in der Sprache des Excel-Systems erwartet. Wenn du auf einem deutschen Rechner arbeitest, verwende .FormulaLocal.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige