5.3k Aufrufe
Gefragt in Tabellenkalkulation von afetinci Mitglied (183 Punkte)
Hallo ,

bin neu im Forum, habe gestern bereits eine Frage gehabt worauf mir hajo schnell mit der richtigen Lösung geantwortet hat. Danke nochmal.

Mein nächstes Problem:

Ich habe eine Excel Bewerberlist wo übliche Daten wie Name, Vorname, Bewerbungsdatum u.s.w. eingetragen sind. Diese Daten verbinden sich mit einem Serienbrief (nur zur Info).
Ist es möglich auch eine "Suchoption" in Excel einzupflegen, wo ich in einer Zelle den Namen eingebe und in einem anderen Tabellenblatt die Werte wiedergegeben werden (10 Eingaben sollten möglich sein).

Das nächste ist:
In einem Feld soll nur ein bestimmtes Format zugelassen werden (###-##). Kann ich das auch mit einem Makro so einstellen das andere Formate nicht zugelassen werden.

Gruß

17 Antworten

0 Punkte
Beantwortet von nighty Experte (6.6k Punkte)
hi afetinci ^^

fuer die suchfunktion ein beispiel

gruss nighty

folgende ausgangsposition

Worksheets(1)
A1 eingabe
A2 bis letzte genutzte zeile als suchbereich
kopiert werden zur zeit die ersten 10 spalten einer zeile bei fund

Worksheets(2)
ausgabe zur ersten freien zeile

einzufuegen
alt+f11/projektexplorer/DeineTabelle

Private Sub worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
If Target.Row = 1 And Target.Column = 1 Then
Dim suche As Range
Set suche = Worksheets(1).Range("A2:A" & Worksheets(1).Range("A" & Rows.Count).End(xlUp).Row).Find(Worksheets(1).Cells(1, 1))
If Not suche Is Nothing Then
Worksheets(1).Range(Worksheets(1).Cells(suche.Row, 1), Worksheets(1).Cells(suche.Row, 10)).Copy _
Worksheets(2).Range(Worksheets(2).Cells(Worksheets(2).UsedRange.SpecialCells(xlCellTypeLastCell).Row + 1, 1), Worksheets(2).Cells(Worksheets(2).UsedRange.SpecialCells(xlCellTypeLastCell).Row + 1, 10))
End If
End If
Application.EnableEvents = True
End Sub
0 Punkte
Beantwortet von finger59 Experte (1.3k Punkte)
Hallo,

ob ich Dir wirklich helfen kann, weiß ich noch nicht, da meine VBA-Kenntnisse auch auf einem unterem Level sind.

Was ich allerdings nicht verstanden habe ist der nachstehende Satz in Deiner Anfrage:

Ist es möglich auch eine "Suchoption" in Excel einzupflegen, wo ich in einer Zelle den Namen eingebe und in einem anderen Tabellenblatt die Werte wiedergegeben werden (10 Eingaben sollten möglich sein).

Was meinst Du mit den 10 Eingaben in einer Zelle ???

Meinst Du in einer Zelle z.B. A1 wird ein Name eingetragen -
dann wird nach dem Namen gesucht und die gefundenen Daten zu dem Namen in das andere Tabellenblatt übertragen und Zelle A1 anschließend wieder löschen und Du könntest dann einen neuen Namen eintragen und der Vorgang wiederholt sich so oft Du einen neuen Namen einträgst oder
möchtest Du einen Bereich von 10 Zellen als Vorgabe machen z.B. A1 : A10 und die dort befindlichen Namen werden dann durchsucht unf übertragen oder meinzest Du es noch anders?

In diesem Sinne.... have a nice Day... Gruß Helmut
0 Punkte
Beantwortet von finger59 Experte (1.3k Punkte)
ok...
meine Anfrage hat sich da wohl bereits erledigt.... ;-)

Gruß Helmut
0 Punkte
Beantwortet von afetinci Mitglied (183 Punkte)
vielen Dank für die schnellen Antworten.

Mit 10 habe ich 10 Sucheingaben gemeint. Der Code hilft mir schon einen Teil weiter. Wie ist es, wenn zwei Namen gleich sind?? Kann man da auch was machen??, Das mir erst ein Fenster oder eine Auswahlbox angezeigt wird, wo ich den richtigen wählen kann, ist so etwas möglich???

Danke nochmal!!
0 Punkte
Beantwortet von nighty Experte (6.6k Punkte)
hi afetinc ^^

ich werd mich dann wohl doch mal an eine userform wagen :-))

schick mir eine mustertabelle zu,damit ich den aufbau der daten hab

und deine konkreten wuensche angeben bitte,lieber zu viel als zu wenig :-))

gruss nighty

oberley@t-online.de bitte mit eindeutigen betreff
0 Punkte
Beantwortet von afetinci Mitglied (183 Punkte)
Hi nighty,

vielen Dank für deine Hilfe:-)

Mit dem ersten Code komme ich sehr gut voran. Ich kann mit diesem auch weiterarbeiten.

Mein Problem ist nur noch:

wenn sich zwei Bewerber mit dem selben Namen in der Liste befinden.
Wie kann ich suchen, dass mir beide angezeigt werden und ich dann einen von diesen auswählen kann, der sich dann in dem anderen Tabellenblatt kopiert.

Ich bräuchte also zu deinem Code nur noch eine Zwischenanzeige (Auswahlbox??) wo ich dann den richtigen Bewerber auswählen kann sofern sich zwei gleiche in der Liste befinen. Ich weiß es ist viel verlangt.

Gruß
afetinci :-)))))
0 Punkte
Beantwortet von nighty Experte (6.6k Punkte)
hi afetinci ^^

schon mal mit mehrfach fund

auswahl muss ich mir noch gedanken machen :-)

gruss nighty

Private Sub worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
If Target.Row = 1 And Target.Column = 1 Then
Dim suche As Range
For zaehler = 1 To Worksheets(1).Range("A" & Rows.Count).End(xlUp).Row
Set suche = Worksheets(1).Range("A" & zaehler & ":A" & Worksheets(1).Range("A" & Rows.Count).End(xlUp).Row).Find(Worksheets(1).Cells(1, 1))
If Not suche Is Nothing Then
zaehler = suche.Row
Worksheets(1).Range(Worksheets(1).Cells(suche.Row, 1), Worksheets(1).Cells(suche.Row, 10)).Copy _
Worksheets(2).Range(Worksheets(2).Cells(Worksheets(2).UsedRange.SpecialCells(xlCellTypeLastCell).Row + 1, 1), Worksheets(2).Cells(Worksheets(2).UsedRange.SpecialCells(xlCellTypeLastCell).Row + 1, 10))
Else
Exit For
End If
Next zaehler
End If
Application.EnableEvents = True
End Sub
0 Punkte
Beantwortet von nighty Experte (6.6k Punkte)
hi afetinci ^^

ups fehlte ja eine deklaration einer var

das zweite makro dient deinen experimenten,um bei halt des makros das ereignis wieder zu aktivieren

gruss nighty

Private Sub worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
If Target.Row = 1 And Target.Column = 1 Then
Dim suche As Range
Dim zaehler As Long
For zaehler = 1 To Worksheets(1).Range("A" & Rows.Count).End(xlUp).Row
Set suche = Worksheets(1).Range("A" & zaehler & ":A" & Worksheets(1).Range("A" & Rows.Count).End(xlUp).Row).Find(Worksheets(1).Cells(1, 1))
If Not suche Is Nothing Then
zaehler = suche.Row
Worksheets(1).Range(Worksheets(1).Cells(suche.Row, 1), Worksheets(1).Cells(suche.Row, 10)).Copy _
Worksheets(2).Range(Worksheets(2).Cells(Worksheets(2).UsedRange.SpecialCells(xlCellTypeLastCell).Row + 1, 1), Worksheets(2).Cells(Worksheets(2).UsedRange.SpecialCells(xlCellTypeLastCell).Row + 1, 10))
Else
Exit For
End If
Next zaehler
End If
Application.EnableEvents = True
End Sub


Sub EreignissOn()
Application.EnableEvents = True
End Sub
0 Punkte
Beantwortet von afetinci Mitglied (183 Punkte)
Hi nighty,

du bist mir eine wirklich große Hilfe. Ich danke dir für die Codes, bin schon fast Fertig mit der Tabelle.

Eine einzige Frage hätte ich noch:
Ich möchte, dass wenn ich im Bereich (Spalte A1:A800) klicke (nur Klicke), mir in Spalte B der wert 1 wiedergegeben wird.

Ich kriege es so schon fast hin, nur weis ich nicht wie ich den Code schreiben soll, dass er sich automatisch auf die nächsten Zeilen kopiert, d.h. wenn ich z.B. Zeiel A5 klicke mir der Wert dementsprechend in Spalte B5 wiedergegeben wird.

Gruß
afetinci
0 Punkte
Beantwortet von nighty Experte (6.6k Punkte)
hi afetinci ^^

auf eine ereignisroutine bezogen,ein beispiel

gruss nighty

click auf den angegebenen bereich,uebergabe des wertes zur spalte b bzw wenn du eine 1 wolltest ersetze den code hinter dem gleichheitszeichen durch die 1

einzufuegen
alt+f11/projektexplorer/DeineTabelle

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Application.EnableEvents = False
If Selection.Count < 2 Then
If Not Intersect(ActiveCell, Range("A1:A800")) Is Nothing Then
Worksheets(1).Cells(Target.Row, Target.Column + 1) = Worksheets(1).Cells(Target.Row, Target.Column).Value2
End If
End If
Application.EnableEvents = False
End Sub
...