elwis01
Goto Top

Excel-Tabelle am Ende um einen Wert erweitern, wenn Bedingung erfüllt ist

Hallo Zusammen,

Gegeben ist eine 3-spaltige Liste in Arbeitsblatt2. Erste Spalte=Laufende Nummer, Zweite Spalte=Textstring, Dritte Spalte=Textstring.

Gegeben in Arbeitsblatt1 ist die Zelle A1, in der ein beliebiger Textstring eingegeben werden kann. Gegeben in Arbeitsblatt1 ist die Zelle B1 eine sverweis-funktion, die den Wert von A1 in der zweiten Spalte des Arbeitsblatt2 sucht und bei Vorhandensein von A1 in Spalte 2 des Arbeitsblatt2 den Wert „bereits vorhanden“ zurück gibt. Wenn A1 nicht in Spalte 2 des Arbeitsblatt2 gefunden wird gibt B1 den Fehler #WERT zurück. Im Fall der Rückgabe von #WERT in B1 soll nun VBA soll nun am Ende der zweiten Spalte des Arbeitsblatt2 der momentan in der Zelle A1 des Arbeitsblatt1 befindliche Wert an das Ende der Spalte 2 des Arbeitsblatt2 kopiert werden und die laufende Nummer in Spalte 1 erhöht werden. Nach dieser Aktion gibt B1 den String „neu in die Tabelle kopiert“ zurück. Bei jeder neuen Eingabe in A1 wiederholt sich diese Routine automatisch.

Herzlichen Dank schon einmal für die Unterstützung

BG

Elwis

Content-Key: 665380

Url: https://administrator.de/contentid/665380

Printed on: April 25, 2024 at 07:04 o'clock

Mitglied: 148121
148121 Apr 08, 2021 updated at 09:43:09 (UTC)
Goto Top
Sverweis aus der Zelle entfernen und stattdessen diesen Code in den Codeabschnitt des ersten Blattes kopieren, aber nicht in ein Modul, da das hier eine Event-Prozedur des entsprechenden Worksheets ist! Der Code erledigt alles was der sverweis auch schon macht, deswegen ist der nicht mehr nötig weil die Event-Prozedur automatisch nach dem Ändern des Wertes in A1 ausgeführt wird.
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Application.Intersect(Range("A1"), Target) Is Nothing Then  
        If Target.Value <> "" Then  
            If Not Sheets(2).Range("B:B").Find(Target.Value, LookIn:=xlValues) Is Nothing Then  
                Range("B1").Value = "bereits vorhanden"  
            Else
                Set rngLast = Sheets(2).Cells(Rows.Count, 1).End(xlUp)
                rngLast.Offset(1, 0).Resize(1, 2).Value = Array(rngLast.Value + 1, Target.Value)
                Range("B1").Value = "neu in die Tabelle kopiert"  
            End If
        Else
            Range("B1").Value = ""  
        End If
    End If
End Sub
Gruß w.