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

Forumthread: Anwendung FormulaLocal

Anwendung FormulaLocal
Stefan
Hallo zusammen,
in meinem Beitrag vom 30.12.09 zum Thema vlookup hatte mir Daniel den Vorschlag gemacht, vorhandene excel-Formeln mittels FormulaLocal in den VBA-Code einzusetzen. Er hatte folgendes Beispiel angeführt:
Sub Test()
With Range(Cells(1, 2), Cells(1,1).End(xldown).Offset(0,1))
.FormulaLocal = "=WENN(ISTNV(SVERWEIS(A1;Tabelle1'!D:E;2;FALSCH))=WAHR;SVERWEIS(A1;'Tabelle2'!A: B;2;FALSCH);SVERWEIS(A1;'Tabelle1'!A:B;2;FALSCH))"
.Formula = .Value
End With
End Sub

Jetzt verstehe ich nicht, was am Ende der ersten Zeile das .Offset(0,1) bedeutet. Könnte mir das bitte jemand kurz erläutern?
In einem Anderen Makro habe ich mal das .FormulaLocal ohne .Offset getestet und es scheint zu funktionieren:

Private Sub CommandButton2_Click()
Dim LastRow As Integer
LastRow = Range("a1").End(xlDown).Row
With Range(Cells(3, 3), Cells(LastRow, 3))
.FormulaLocal = "=WENN(ISTNV(VERGLEICH(A3;'Tabelle Daten'!A:A;0))=WAHR;0;1)"
.Formula = .Value
End With
End Sub

Könnte bitte mal jemand diesen Code anschauen und mir sagen, ob ich noch einen Gedankenfehler habe?
Danke und Gruß
Stefan
Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Anwendung FormulaLocal
07.01.2010 12:29:32
Rudi
Hallo,
.Offset(0,1)=1 Spalte weiter rechts
Hast du keine Hilfe-Datei?
Code sieht OK aus. Teste es doch einfach.
Gruß
Rudi
AW: Anwendung FormulaLocal
07.01.2010 12:34:50
Stefan
Hallo Rudi,
danke für die Antwort.
Dass .Offset(x, x) ein Verschieben um eine bestimmte Zeilen, oder Spaltenanzahl bedeutet, ist mir klar.
Unklar ist mir aber, was es in diesem Makro bewirkt.
Gruß
Stefan
Anzeige
AW: Anwendung FormulaLocal
07.01.2010 13:29:03
Daniel
HI
der Code mit Offset benötigt keine Variable LastRow.
denk mal scharf nach, warum das so sein könnte.
Schau dir auch mal genau die einzelnen Spaltennummern an.
vielleicht kommst du dann selber drauf, was da genau passiert.
gruß, Daniel
AW: Anwendung FormulaLocal
07.01.2010 14:31:58
Stefan
Ich versuche mal, es zu beschreiben und teile hierzu die Elemente der betreffenden Zeile in mehrere Zeilen auf:
Range(Cells(1, 2),_______Benennt als erste Zelle des Bereichs die Zelle B1
Cells(1, 1).End(xldown)___Sucht die letzte Zelle der 1. Spalte
Offset(0, 1)____________Geht eine Spalte nach Rechts
Wenn in meinem Arbeitsblatt in den Zellen A1 bis A3 Werte stehen, geht der für die with-Anweisung definierte Range-Bereich in meinem Arbeitsblatt von Zelle B1 bis Zelle B3.
Der Grund für meine Nachfrage war, dass vorher mein Makro nicht funktionierte. Der Fehler war, dass ich den Offset um eine Spalte weiter setzten musste.
Jetzt habe ich das Makro umgeschrieben und erneut getestet. Es funktioniert jetzt auch mit Offset:
Private Sub CommandButton2_Click()
With Range(Cells(3, 3), Cells(1, 1).End(xlDown).Offset(0, 2))
.FormulaLocal = "=WENN(ISTNV(VERGLEICH(A3;'Lieferantenliste Status 0 bis 7'!A:A;0))=WAHR; _
0;1)"
.Formula = .Value
End With
End Sub
Bitte entschuldigt meine (für euch) naiven Fragen, und nochmal Danke für's Helfen. Ich habe mit VBA einfach erst angefangen und muss noch viel lernen.
Stefan
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Anwendung von FormulaLocal in Excel VBA


Schritt-für-Schritt-Anleitung

  1. Öffne den VBA-Editor: Drücke ALT + F11 in Excel, um den VBA-Editor zu öffnen.

  2. Erstelle ein neues Modul: Klicke mit der rechten Maustaste auf dein Projekt im Projektfenster und wähle Einfügen > Modul.

  3. Füge den Code ein: Kopiere den folgenden Code in das Modul:

    Sub Test()
       With Range(Cells(1, 2), Cells(1, 1).End(xlDown).Offset(0, 1))
           .FormulaLocal = "=WENN(ISTNV(SVERWEIS(A1;Tabelle1!D:E;2;FALSCH))=WAHR;SVERWEIS(A1;'Tabelle2'!A:B;2;FALSCH);SVERWEIS(A1;'Tabelle1'!A:B;2;FALSCH))"
           .Formula = .Value
       End With
    End Sub
  4. Testen des Codes: Führe das Makro aus, um zu sehen, ob es wie gewünscht funktioniert.


Häufige Fehler und Lösungen

  • Fehler: "Falsche Formel"

    • Lösung: Stelle sicher, dass die Formel korrekt ist und alle Zellreferenzen stimmen. Verwende FormulaLocal, wenn du die Formel in einer lokalisierte Version eingibst (z.B. mit Semikolons).
  • Fehler: .Offset funktioniert nicht

    • Lösung: Achte darauf, dass du die richtige Anzahl an Zeilen und Spalten angibst. .Offset(0, 1) bedeutet, dass du eine Spalte nach rechts gehst.

Alternative Methoden

Wenn du in Excel VBA mit Formeln arbeiten möchtest, kannst du auch die .Formula Methode verwenden. Diese Methode ist nützlich, wenn du die Formel in der englischen Version eingibst:

Sub Beispiel()
    Range("B1").Formula = "=IF(ISNA(VLOOKUP(A1,Table1!D:E,2,FALSE)), VLOOKUP(A1,Table2!A:B,2,FALSE), VLOOKUP(A1,Table1!A:B,2,FALSE))"
End Sub

Praktische Beispiele

Hier sind einige praktische Beispiele, um die Verwendung von FormulaLocal zu verdeutlichen:

  1. Mit Offset und LastRow:

    Private Sub CommandButton2_Click()
       Dim LastRow As Integer
       LastRow = Range("A1").End(xlDown).Row
       With Range(Cells(3, 3), Cells(LastRow, 3))
           .FormulaLocal = "=WENN(ISTNV(VERGLEICH(A3;'Tabelle Daten'!A:A;0))=WAHR;0;1)"
           .Formula = .Value
       End With
    End Sub
  2. Einfaches Beispiel ohne Offset:

    Sub EinfachesBeispiel()
       Range("C1").FormulaLocal = "=SUMME(A1:B1)"
    End Sub

Tipps für Profis

  • Verwende .FormulaLocal für mehrsprachige Arbeitsmappen: Wenn du mit mehreren Sprachen arbeitest, hilft FormulaLocal, die Formeln an die lokale Sprache anzupassen.
  • Teste den Code regelmäßig: Führe deinen Code Schritt für Schritt aus, um Fehler schnell zu identifizieren.
  • Nutze die Hilfe-Funktion: Bei Unsicherheiten kannst du jederzeit die Excel-Hilfe aufrufen oder Online-Ressourcen konsultieren, um mehr über VBA und FormulaLocal zu lernen.

FAQ: Häufige Fragen

1. Was ist der Unterschied zwischen .Formula und .FormulaLocal?
Formula verwendet die englische Version der Formel, während FormulaLocal die Formel in der lokalen Sprache eingibt.

2. Wie kann ich sicherstellen, dass meine Formel korrekt ist?
Überprüfe die Zellreferenzen und die Syntax der Formel. Du kannst auch die Formel direkt in eine Zelle eingeben, um sicherzustellen, dass sie funktioniert, bevor du sie in den VBA-Code überträgst.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige