online 1
gast (50)

/ Forum / Tabellenkalkulation

TabellenkalkulationTabellenkalkulation

Fragevon afetinci vom 19.02.2021, 12:06 Options

Lösung

Suchenoption Makro

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ß


Antwort schreiben

Antwort 1 von nighty vom 19.02.2021, 12:34 Options

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

Antwort 2 von finger59 vom 19.02.2021, 12:36 Options

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

Antwort 3 von finger59 vom 19.02.2021, 12:37 Options

ok...
meine Anfrage hat sich da wohl bereits erledigt.... ;-)

Gruß Helmut

Antwort 4 von afetinci vom 19.02.2021, 12:48 Options

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!!

Antwort 5 von nighty vom 19.02.2021, 13:50 Options

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

Antwort 6 von afetinci vom 19.02.2021, 14:39 Options

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 :-)))))

Antwort 7 von nighty vom 19.02.2021, 16:20 Options

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

Antwort 8 von nighty vom 19.02.2021, 16:24 Options

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

Antwort 9 von afetinci vom 20.02.2021, 14:22 Options

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

Antwort 10 von nighty vom 20.02.2021, 14:58 Options

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

Antwort 11 von nighty vom 20.02.2021, 15:00 Options

hi all ^^

ups , vorletzte zeile bitte auf true :-)

gruss nighty

Antwort 12 von nighty vom 20.02.2021, 15:07 Options

hi all ^^

also irgend ein fehler ist wohl immer da,ich glaub ich hatte noch nie ein fehlerfreies makro,das sollte zu denken geben *gruebel gruebel*

ich habs rausgefunden :-)

nennt sich das nighty syndrom *grrr*

gruss nighty

Antwort 13 von afetinci vom 23.02.2021, 08:45 Options

Hi Nighty,

ich hoffe ich stresse dich nicht rein :-). Leider konnte ich dir nicht antworten, da ich am wochenende nicht hier war. Die Makros haben bis jetzt fehlerfrei funktioniert :-)))) Also bist super.

Dein Makro überträgt mir den Wert von Spalte A nach Spalte B beim klicken. Vielleicht konnte ich das nicht gut erklären:

Ich benötige ein Code, dass wenn ich irgendwo (Zeile 1:800) auf Spalte A klicke mir in Spalte B in derselben Zeile wie A der Wert 1 eingetragen wird.

Gruß und vielen Dank für deine Mühen.

afetinci

Antwort 14 von fedjo vom 23.02.2021, 09:47 Options

Hallo afetinci,
mit einem Doppel Klick:

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim RaBereich As Range, RaZelle As Range
Set RaBereich = Range("A1:A800")
Application.EnableEvents = False
For Each RaZelle In Range(Target.Address)
If Not Intersect(RaZelle, RaBereich) Is Nothing Then
RaZelle.Offset(0, 1) = 1
End If
Next RaZelle
Application.EnableEvents = True
Set RaBereich = Nothing
End Sub

Oder

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Dim RaBereich As Range, RaZelle As Range
Set RaBereich = Range("A1:A800")
Application.EnableEvents = False
For Each RaZelle In Range(Target.Address)
If Not Intersect(RaZelle, RaBereich) Is Nothing Then
RaZelle.Offset(0, 1) = 1
End If
Next RaZelle
Application.EnableEvents = True
Set RaBereich = Nothing
End Sub

Gruß
fedjo

Antwort 15 von afetinci vom 23.02.2021, 11:02 Options

Hallo Fedjo,

vielen Dank für den Code. So soll er funktionieren. Kann man aber anstelle Doppel Klick nur einen Klick machen??

Gruß

Antwort 16 von fedjo vom 23.02.2021, 12:25 OptionsLösung

Lösung
Hallo afetinci,
wenn die aktive Zelle leer ist wird nichts eingetragen.
Gruß
fedjo

Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
If Not Intersect(ActiveCell, Range("A1:A800")) Is Nothing Then
If ActiveCell = "" Then Exit Sub
Dim RaBereich As Range, RaZelle As Range
Set RaBereich = Range("A1:A800")
Application.EnableEvents = False
For Each RaZelle In Range(Target.Address)
If Not Intersect(RaZelle, RaBereich) Is Nothing Then
RaZelle.Offset(0, 1) = 1
End If
Next RaZelle
Application.EnableEvents = True
Set RaBereich = Nothing
End If
End Sub

Antwort 17 von afetinci vom 23.02.2021, 12:47 Options

Hi Fedjo,

Besten Dank für deine Mühen!!!
klappt super!!!

Gruß
afetinci

Ähnliche Themen

Makro Anweisung
Nasic  13.08.2007 - 67 Hits - 4 Antworten

Makro
mistermo  20.08.2007 - 29 Hits - 4 Antworten

Ausstieg Makro + allgem. Makro-Frage
Tomschi  28.08.2007 - 52 Hits - 2 Antworten

makro suche
gast68  11.09.2007 - 57 Hits - 1 Antwort

Makro
kurtl  10.11.2008 - 77 Hits - 14 Antworten

Hinweis

Diese Frage ist schon etwas älter, Sie können daher nicht mehr auf sie antworten. Sollte Ihre Frage noch nicht gelöst sein, stellen Sie einfach eine neue Frage im Forum..

Neue Einträge

Version: supportware 1.9.150 / 10.06.2022, Startzeit:Thu Jan 8 21:07:44 2026