Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1212to1216
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Zellenwert Tab1,A1 in Tab2. Spalte A suchen.

Zellenwert Tab1,A1 in Tab2. Spalte A suchen.
Quokks
Hallo Forum
Bin auf der SUCHE wortwörtlich genommen. nach eine VB Code der folgendes macht.
Habe in Tabelle 2 in A2, A3, A4, A5 Eingabezellen, in die man folgende Daten eingeben soll.
Tabelle1 A2 für Nachname, A3 für Vorname, A4 für Straße, A5 für Plz .
Die Namen sind nur Überschriften für die Zelle
Nach Eingabe eines Nachnamen in A2, soll nun nach Betätigung der Enter-Taste der "Zellwert in A2" in der Tabelle 1 in der Spalte A1 (Namenfeld = Nachname) gesucht werden. Bei Fund sollte sich jetzt in der aktiven Tabelle 2 die (Zelle A2 = Nachname) die Schriftfarbe in Rot ändern, bei keinen Fund, keine Änderung der Schriftfarbe, dann Zelle A3 aktivieren, usw. bis alle bis A5 gefüllt sind. Danach füge ich diesen Datensatz in die Tabelle1 an die letzte leere Zelle wieder an
Wie macht mann das in VB. Das ganze habe ich schon mit Bedingter Formatierung probiert, und zwar so: =ZÄHLENWENN(Nachname;A2) funtz zwar, aber ich bekomme die Beding.Formt. nicht wieder abgeschaltet.
Danke schon mal.
Quokks

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

Betreff
Benutzer
Anzeige
AW: Zellenwert Tab1,A1 in Tab2. Spalte A suchen.
27.05.2011 07:48:34
fcs
Hallo Quokks,
hier ein Makro, das die Eingabe von Werten in der Tabelle überwacht und nach Prüfung von Vorname und Nachname die Formatierung der Zellen in A2 und A3 anpasst.
Gruß
Franz
'Code im Modul der Tabelle in der Daten eingegeben werden
Private Sub Worksheet_Change(ByVal Target As Range)
Dim wks1 As Worksheet, Zelle As Range, vFind
Dim sAddresse As String
'Prüfen ob 1 Zelle in Spalte 1 (A) geändert wurde
If Target.Column = 1 And Target.Cells.Count = 1 Then
Set wks1 = Worksheets("Tabelle1") 'Name der Tabelle mit allen Namen
Select Case Target.Row
Case 2 'Nachname - in Zeile 2
vFind = Target.Value
If vFind = "" Then
'Eingabe wurde gelöscht
Target.Font.ColorIndex = xlColorIndexAutomatic
Else
'eingegebenen Namen in Spalte 1 (A) der Tabelle1 suchen
Set Zelle = wks1.Columns(1).Find(what:=vFind, LookIn:=xlValues, Lookat:=xlWhole)
If Zelle Is Nothing Then
'eingegebener Name in Tabelle1 nicht gefunden
Target.Font.ColorIndex = xlColorIndexAutomatic
Target.Offset(1, 0).Font.ColorIndex = xlColorIndexAutomatic
Else
If Zelle.Offset(0, 1) = "" Then
'Es ist noch kein Vorname eingegeben
Target.Font.ColorIndex = 3
Else
sAddresse = Zelle.Address
Target.Font.ColorIndex = xlColorIndexAutomatic
Target.Offset(1, 0).Font.ColorIndex = xlColorIndexAutomatic
'Prüfen, ob Kombination von Name und Vorname schon vorhanden
Do
If Target.Offset(1, 0).Value = Zelle.Offset(0, 1).Value Then
Target.Font.ColorIndex = 3
Target.Offset(1, 0).Font.ColorIndex = 3
Exit Do
End If
Set Zelle = wks1.Columns(1).FindNext(After:=Zelle)
Loop Until sAddresse = Zelle.Address
End If
End If
End If
Target.Offset(1, 0).Select
Case 3 'Vorname - in Zeile 3
vFind = Target.Value
If vFind = "" Then
'Eingabe wurde gelöscht
Target.Font.ColorIndex = xlColorIndexAutomatic
Else
'eingegebenen Vornamen in Spalte 2 (B) der Tabelle1 suchen
Set Zelle = wks1.Columns(2).Find(what:=vFind, LookIn:=xlValues, Lookat:=xlWhole)
If Zelle Is Nothing Then
'eingegebener Vorname in Tabelle1 nicht gefunden
Target.Font.ColorIndex = xlColorIndexAutomatic
Target.Offset(-1, 0).Font.ColorIndex = xlColorIndexAutomatic
Else
If Zelle.Offset(0, -1) = "" Then
'Es ist noch kein Name eingegeben
Target.Font.ColorIndex = 3
Else
sAddresse = Zelle.Address
Target.Font.ColorIndex = xlColorIndexAutomatic
Target.Offset(-1, 0).Font.ColorIndex = xlColorIndexAutomatic
'Prüfen, ob Kombination von Name und Vorname schon vorhanden
Do
If Target.Offset(-1, 0).Value = Zelle.Offset(0, -1).Value Then
Target.Font.ColorIndex = 3
Target.Offset(-1, 0).Font.ColorIndex = 3
Exit Do
End If
Set Zelle = wks1.Columns(2).FindNext(After:=Zelle)
Loop Until sAddresse = Zelle.Address
End If
End If
End If
Target.Offset(1, 0).Select
Case 4 To 5 '5 ist die letzte Zeile in Spalte 1 (A) in der Eingabe automatisch in nächste  _
_
Zeile springen soll
Target.Offset(1, 0).Select
End Select
End If
End Sub

Anzeige
AW: Habe Schwierigkeiten diesen code anzupassen
28.05.2011 17:21:25
Quokks
Hallo Franz
Also erst mal bedanke ich mich für deine Mühe und Arbeit für deinen Code.
Habe noch Schwierigkeiten diesen code anzupassen. In meiner ersten Problembeschreibung habe ich mich wohl falsch ausgedrückt.
Geschrieben hab ich:
"Habe in Tabelle 2 in A2, A3, A4, A5 Eingabezellen, in die man folgende Daten eingeben soll.
Tabelle1 A2 für Nachname, A3 für Vorname, A4 für Straße, A5 für Plz ."
Das sollte eigentlich ganz anders aussehen, und zwar so:
Habe in Tabelle 2 in A2, B2, C2, D2 Eingabezellen, in die man folgende Daten eingeben soll.
Tabelle1 A2 für Nachname, B2 für Vorname, C2 für Straße, D2 für Plz .
Kann man die Zellen nicht anders erfassen, zB. "A2" "B2" usw. also ohne Column und Cells
Wie bekomme ich es jetzt hin das ich diese Eingabezellen definiere.
Habe schon diverse Änderungen vorgenommen, aber irgendwie bekomme ich es nicht hin, das genau diese Zellen als Eingabezellen erkannt werden. WAS und WO muß ich ändern?
Bedanke mich schonmal vorab.
mfg Stefan
Anzeige
AW: Habe Schwierigkeiten diesen code anzupassen
30.05.2011 22:09:26
fcs
Hallo Stefan,
unter VBA ist das Arbeiten/Programmieren mit Cells(Zeile,Spalte) meist einfacher als mit der von den Tabellen her gewohnten A1-Schreibweise der Zelladressen.
Prizipiell kann man in VBA auch die Zell-Adresse in der A1-Schreibweise prüfen. Dabei muss die Zelladdresse als absoluter Bezug (mit $-Zeichen) angegeben werden. z.B.
Select Case Target.Address
Case "$A$2"
Case "$B$2"
End Select

Im Code müssen in deinem Fall bezogen auf die geänderte Zelle (Target) die Angaben zu Zeilen- und Spalten-Werte getauscht/angepasst werden. In der Hauptprüfung wird jetzt zuerst in der If-Prüfung auf die Zeile der geänderten Zelle geprüft. Danach dann auf die Spalten in den Case-Prüfungen.
Gruß
Franz
'Code im Modul der Tabelle in der Daten eingegeben werden
Private Sub Worksheet_Change(ByVal Target As Range)
Dim wks1 As Worksheet, Zelle As Range, vFind
Dim sAddresse As String
'Prüfen ob eine Zelle in Zeile 2 geändert wurde
If Target.Row = 2 And Target.Cells.Count = 1 Then
Set wks1 = Worksheets("Tabelle1") 'Name der Tabelle mit allen Namen
Select Case Target.Column
Case 1 'Nachname - in Spalte 1 (A)
vFind = Target.Value
If vFind = "" Then
'Eingabe wurde gelöscht
Target.Font.ColorIndex = xlColorIndexAutomatic
Else
'eingegebenen Namen in Spalte 1 (A) der Tabelle1 suchen
Set Zelle = wks1.Columns(1).Find(what:=vFind, LookIn:=xlValues, Lookat:=xlWhole)
If Zelle Is Nothing Then
'eingegebener Name in Tabelle1 nicht gefunden
Target.Font.ColorIndex = xlColorIndexAutomatic
Target.Offset(0, 1).Font.ColorIndex = xlColorIndexAutomatic
Else
If Zelle.Offset(1, 0) = "" Then
'Es ist noch kein Vorname eingegeben
Target.Font.ColorIndex = 3
Else
sAddresse = Zelle.Address
Target.Font.ColorIndex = xlColorIndexAutomatic
Target.Offset(0, 1).Font.ColorIndex = xlColorIndexAutomatic
'Prüfen, ob Kombination von Name und Vorname schon vorhanden
Do
If Target.Offset(0, 1).Value = Zelle.Offset(0, 1).Value Then
Target.Font.ColorIndex = 3
Target.Offset(0, 1).Font.ColorIndex = 3
Exit Do
End If
Set Zelle = wks1.Columns(1).FindNext(After:=Zelle)
Loop Until sAddresse = Zelle.Address
End If
End If
End If
Target.Offset(0, 1).Select
Case 2 'Vorname -  in Spalte 2 (B)
vFind = Target.Value
If vFind = "" Then
'Eingabe wurde gelöscht
Target.Font.ColorIndex = xlColorIndexAutomatic
Else
'eingegebenen Vornamen in Spalte 2 (B) der Tabelle1 suchen
Set Zelle = wks1.Columns(2).Find(what:=vFind, LookIn:=xlValues, Lookat:=xlWhole)
If Zelle Is Nothing Then
'eingegebener Vorname in Tabelle1 nicht gefunden
Target.Font.ColorIndex = xlColorIndexAutomatic
Target.Offset(0, -1).Font.ColorIndex = xlColorIndexAutomatic
Else
If Zelle.Offset(0, -1) = "" Then
'Es ist noch kein Name eingegeben
Target.Font.ColorIndex = 3
Else
sAddresse = Zelle.Address
Target.Font.ColorIndex = xlColorIndexAutomatic
Target.Offset(0, -1).Font.ColorIndex = xlColorIndexAutomatic
'Prüfen, ob Kombination von Name und Vorname schon vorhanden
Do
If Target.Offset(0, -1).Value = Zelle.Offset(0, -1).Value Then
Target.Font.ColorIndex = 3
Target.Offset(0, -1).Font.ColorIndex = 3
Exit Do
End If
Set Zelle = wks1.Columns(2).FindNext(After:=Zelle)
Loop Until sAddresse = Zelle.Address
End If
End If
End If
Target.Offset(0, 1).Select
Case 3 To 4 ' Spalten C bis D, 4 (D) ist die letzte Spalte in Zeile 2 in der Eingabe  _
automatisch _
in nächste Spalte springen soll
Target.Offset(0, 1).Select
End Select
End If
End Sub

Anzeige

404 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige