Clever-Excel-Forum

Normale Version: VBA Formel
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo zusammen,

nun melde ich mich nochmal mit der Bitte um Hilfe.
Möchte mir einfach eine schönen Datenbank erarbeiten und trotz meines hohen Alters dazu lernen 17

Habe eine einfache Excel Liste (Alphabetisch Firmenname:  Branche - Ansprechpartner - Ort - Plz - Telefon - Mail usw.usw.)
Mit nachfolgender Formel kann ich in meiner Maske nach Namen suchen und alle in einer Zeile eingetragenen Daten werden mir angezeigt.
 

Private Sub Öffnen_Click()
Set finden = Columns(1).Find(what:=Firmenname)
If finden Is Nothing Then
MsgBox "(Es wurde nichts passendes gefunden)"
Else

Firmenname = finden.Offset(0, 0)
Client = finden.Offset(0, 1)
Branche = finden.Offset(0, 2)
Mietobjekt = finden.Offset(0, 3)
Etage = finden.Offset(0, 4)
Straße = finden.Offset(0, 5)
Plz = finden.Offset(0, 6)
Ort = finden.Offset(0, 7)
Ansprechpartner = finden.Offset(0, 8)
Position = finden.Offset(0, 9)
Telefon = finden.Offset(0, 10)
Mobil = finden.Offset(0, 11)
Mail = finden.Offset(0, 12)
Wartungsauftrag = finden.Offset(0, 15)
End If
End Sub


Nun Habe ich einen Weiter Button und einen zurück Button eingefügt.
Wie lautet die Formel für "Weiter bzw. Zurück" damit ich in der Liste einfach weiter oder zurück klicken kann.

Vielen Dank für eure Unterstützung.
Viele Grüße vom Bodensee
Hallo,

das würde ich ganz anders angehen. Am besten stellst du mal eine Beispieldatei ein, dann kann man konkrete Vorschläge machen.
Bitte, verwende Code Tags trotz deines 'hohes' Alters

Was sollte 'weiter' bzw 'zurück' bedeuten ?
Warum ladest die keine Beispieldatei hoch zum Illustrieren deiner Frage ?

reicht schon:

Code:
Private Sub Öffnen_Click()
    if not Columns(1).Find(Firmenname) is nothing then sn=Columns(1).Find(Firmenname).resize(,15)
End Sub

Aber....: autofilter macht das auch.
Code:
Private Sub Öffnen_Click()
    cells(1).currentregion.autofilter 1, Firmenname
End Sub
Hallo,

(17.11.2022, 11:56)Romex1969 schrieb: [ -> ]trotz meines hohen Alters dazu lernen 17
Definiere hohes Alter ... wenn 1969 Dein Geburtsjahr ist, dann ist das für mich kein hohes Alter ...

(17.11.2022, 11:56)Romex1969 schrieb: [ -> ]Nun Habe ich einen Weiter Button und einen zurück Button eingefügt.
Wie lautet die Formel für "Weiter bzw. Zurück" damit ich in der Liste einfach weiter oder zurück klicken kann.

Das wäre dann wahrscheinlich Findnext und Findprevious.

(17.11.2022, 11:56)Romex1969 schrieb: [ -> ]
Code:
Firmenname = finden.Offset(0, 0)
Offset(0,0) kannst Du auch weglassen. Wenn etwas gefunden wurde zeigt die Variable find auf die Zelle, in der der Suchbegriff gefunden wurde. Es würde also reichen:
Code:
Firmenname = finden.value

Um das aber umzusetzen muss die letzte gefundene Position bekannt sein. Also müsste man ggf. finden global definieren.

Ich würde die Ausgabe dann aber in eine eigene Sub auslagern, da der gleiche Code bei Find, Findnext und Findprevious benötigt wird.

Eventuell könnte es so funktionieren:
Code:
Dim finden As Range
Dim Firmenname As String
Private Sub Öffnen_Click()
Firmenname = "10001"
Set finden = Columns(1).Find(what:=Firmenname)
If finden Is Nothing Then
     MsgBox "(Es wurde nichts passendes gefunden)"
Else
     Ausgabe
End If
End Sub
Private Sub Weiter_Click()
If Not finden Is Nothing Then
    Set finden = Columns(1).FindNext(after:=finden)
    Ausgabe
End If
End Sub
Private Sub Zurueck_Click()
If Not finden Is Nothing Then
    Set finden = Columns(1).FindPrevious(before:=finden)
    Ausgabe
End If
End Sub
Private Sub Ausgabe()
Firmenname = finden.Value
Client = finden.Offset(0, 1).Value
Branche = finden.Offset(0, 2).Value
Mietobjekt = finden.Offset(0, 3).Value
Etage = finden.Offset(0, 4).Value
Straße = finden.Offset(0, 5).Value
Plz = finden.Offset(0, 6).Value
Ort = finden.Offset(0, 7).Value
Ansprechpartner = finden.Offset(0, 8).Value
Position = finden.Offset(0, 9).Value
Telefon = finden.Offset(0, 10).Value
Mobil = finden.Offset(0, 11).Value
Mail = finden.Offset(0, 12).Value
Wartungsauftrag = finden.Offset(0, 15).Value
'... wo auch immer das verwendet oder angezeigt wird
End Sub
@Michael
Ohne Rechner, daher von mir nur vermutet: Führe deine Suche mal per Code (10001) aus, suche dann in der Userinterface-Suche nach etwas anderem (20001) und probiere dann mal deine Weiter-/Zurück-Prozeduren: Was wird dann als nächstes gefunden, 10001 oder 20001?
@Earl Fred: Das Konstrukt ist zwar prinzipiell vom OP, aber da hast Du natürlich recht, das sollte er bedenken!
Hi,

also, ich würde einfach eine Standard-Funktionalität von Excel verwenden.

Möglichkeit 1:
Verwende den Autofilter oder gleich eine Strg-T-Tabelle

Möglichkeit 2:
Verwende die Eingabemaske
Gehe dazu auf deine Liste und drücke und halte die Alt-Taste dann drückst du zusätzlich "N" und dann "M". Die Eingabemaske erlaubt dir die Suche nach beliebigen Einträgen. Ebenso hat sie einen "Weitersuchen"- und einen "Vorherigen suchen"-Botton. Und man kann damit auch neue Einträge erstellen.

PS: wahrscheinlich bin ich mittlerweile zu alt, um selber ständig das Rad neu zu erfinden bzw. Eingabe- und Suchmasken zu programmieren. 21