Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

ISTNV mit VBA

Forumthread: ISTNV mit VBA

ISTNV mit VBA
22.08.2003 22:20:26
Ernst Dunkel
Guten Abend Forum
Ich komme nicht weiter.
Mittels VBA füge ich den untenstehenden Befehl ein.
=WENN(ISTNV(SVERWEIS(B:B;Tabelle2!B1:D18;2;0));"";SVERWEIS(B:B;Tabelle2!B1:D18;2;0))
Wenn man den Befehl in Excel manuell eingibt funktioniert der Befehl.
Wenn ich ihn per VBA einfüge funktioniert er nicht!
Könnte mir jemand behilflich sein?
Mit freundlichen Grüssen Ernst Dunkel
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: ISTNV mit VBA
22.08.2003 22:32:55
PeterW
Hallo Ernst,
was meinst du mit "funktioniert nicht"? Gibt es eine Fehlermeldung und wenn ja welche? Wie fügst du den Befehl per VBA ein, FormulaLocal? Zeig doch mal den Code.
Gruß
Peter

AW: ISTNV mit VBA
22.08.2003 23:03:33
Ernst Dunkel
Halllo Peter danke für Dein Interesse an meinem Problem
Fehler Meldung „Anwendungs- oder objkektdef. Fehler“
Ich habe nun ein kleiner Teil des VBA-Codes nachgebaut.

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
'Cells(Target.Row, 3).FormulaLocal = "=SVERWEIS(B:B;Tabelle2!B1:D18;2;0)" 'Ausgangslage
Cells(Target.Row, 3).FormulaLocal = "=WENN(ISTNV(SVERWEIS(B:B;Tabelle2!B1:D18;2;0));"";SVERWEIS(B:B;Tabelle2!B1:D18;2;0))" 'Erweitert
End Sub


Anzeige
AW: ISTNV mit VBA
22.08.2003 23:12:15
PeterW
Hallo Ernst,
das Problem sind die zwei Anführungszeichen. Versuch es mal so:
Cells(Target.Row, 3).FormulaLocal = "=WENN(ISTNV(SVERWEIS(B:B;Tabelle2!B1:D18;2;0));" & Chr(34) & Chr(34) & ";SVERWEIS(B:B;Tabelle2!B1:D18;2;0))" 'Erweitert
Gruß
Peter

AW: ISTNV mit VBA
22.08.2003 23:19:25
Ernst Dunkel
Hallo Peter
Deine Ergänzungen sind supper! Vilen Dank.
Gruss Ernst Dunkel
Habe den Code gemäss K.Rola noch mit dem Makrorecorder aufgezeichnet.

ActiveCell.FormulaR1C1 = _
"=IF(ISNA(VLOOKUP(C[-1],Tabelle2!R[-1]C[-1]:R[16]C[1],2,0)),"""",VLOOKUP(C[-1],Tabelle2!R[-1]C[-1]:R[16]C[1],2,0))"
Range("C3").Select

Anzeige
AW: ISTNV mit VBA
22.08.2003 22:39:30
K.Rola
Hallo,
schreib die Formel/Funktion in eine Zelle, markiere diese,
starte den Makrorekorder, drück F2, beende die Aufzeichnung.
Gruß K.Rola

AW: ISTNV mit VBA
22.08.2003 23:14:30
Ernst Dunkel
Guten Abend Rola
Danke für den Hinweis. Habe es gemacht und mir den Makrocode angeschaut. Ich habe nun gesehen was falsch ist.
Gruss Ernst Dunkel

Anzeige
;
Anzeige

Infobox / Tutorial

ISTNV mit VBA in Excel


Schritt-für-Schritt-Anleitung

  1. Öffne den Visual Basic for Applications (VBA) Editor:

    • Drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Füge einen neuen Modul hinzu:

    • Klicke auf Einfügen > Modul.
  3. Gib den folgenden VBA-Code ein:

    Private Sub Worksheet_Change(ByVal Target As Excel.Range)
       Cells(Target.Row, 3).FormulaLocal = "=WENN(ISTNV(SVERWEIS(B:B;Tabelle2!B1:D18;2;0));" & Chr(34) & Chr(34) & ";SVERWEIS(B:B;Tabelle2!B1:D18;2;0))"
    End Sub
    • Achte darauf, dass die Anführungszeichen korrekt gesetzt sind, um den "Anwendungs- oder objektdef. Fehler" zu vermeiden.
  4. Speichere Deine Arbeit und schließe den VBA-Editor.

  5. Teste die Funktion, indem Du Werte in die Zellen der Spalte B eingibst und überprüfst, ob der Wert in der Spalte C entsprechend aktualisiert wird.


Häufige Fehler und Lösungen

  • Fehler: Anwendungs- oder objektdef. Fehler:

    • Stelle sicher, dass die Anführungszeichen in der Formel korrekt sind. Verwende Chr(34) für Anführungszeichen innerhalb des Strings.
  • Fehler: Formel funktioniert manuell, aber nicht in VBA:

    • Überprüfe den VBA-Code auf Tippfehler und stelle sicher, dass Du die Formel in der richtigen Syntax eingibst.

Alternative Methoden

  • Direktes Eingeben der Formel in eine Zelle:

    • Du kannst die Formel direkt in eine Zelle eingeben, anstatt sie per VBA zu setzen. Dies kann für einfache Anwendungen schneller sein.
  • Verwendung des Makrorecorders:

    • Starte den Makrorecorder, um die Eingabe der Formel aufzuzeichnen und den generierten Code zu überprüfen.

Praktische Beispiele

  1. Formel für eine einfache SVERWEIS-Funktion:

    Cells(Target.Row, 3).FormulaLocal = "=SVERWEIS(B:B;Tabelle2!B1:D18;2;0)"
  2. Eingabe in einer Zelle mit Makrorecorder:

    • Markiere die Zelle mit der Formel, drücke F2, um zu editieren, und stoppe den Recorder.

Tipps für Profis

  • Verwende die richtige Excel-Version:

    • Achte darauf, dass Du eine aktuelle Version von Excel verwendest, da die Funktionalität variieren kann.
  • Debugging:

    • Nutze Debug.Print im VBA-Code, um Werte zu überprüfen und sicherzustellen, dass alles korrekt funktioniert.
  • Vermeide unnötige Berechnungen:

    • Optimiere Deinen VBA-Code, um die Performance zu verbessern, indem Du unnötige Berechnungen vermeidest.

FAQ: Häufige Fragen

1. Warum funktioniert die Formel in VBA nicht, wenn sie manuell funktioniert? Die häufigste Ursache sind falsch gesetzte Anführungszeichen oder Syntaxfehler im VBA-Code.

2. Kann ich die Formel auch in einer anderen Sprache verwenden? Ja, Du kannst die Formel in der jeweiligen Sprache anpassen, indem Du die Funktionennamen und Argumente entsprechend übersetzt.

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