Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
792to796
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
792to796
792to796
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Suche durch Textbox-Eingabe
24.08.2006 15:22:39
mtremer
Hallo Excel-Freunde,
ich beschäftige hich heute zum ersten Mal mit einer TextBox.
Ist es möglich, mit einer solchen TextBox (oder einer anderen Variante) bei Eingabe in das Feld einen Wert suchen zu lassen?
Ich habe vor, dass Excel dann auf genau die Zelle springt, die diesen Wert enthält.
Für Euch Profis gibt es da bestimmt eine einfache Lösung, oder?
Danke für die Hilfe.
Viele Grüße
Marco

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Suche durch Textbox-Eingabe
24.08.2006 15:31:24
{mskro}
Hallo Marco,
probiere es mal mit dem kleinen VBA, ob es dir weiterhilft.

Sub SuchenUndFinden()
Cells.Select
Frage = InputBox("wonach soll gesucht werden?")
Selection.Find(What:=Frage, After:=ActiveCell, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False).Activate
End Sub

Gruss Manfred
Rückmeldung wäre nett!
AW: Suche durch Textbox-Eingabe
24.08.2006 15:40:20
mtremer
Hallo Manfred,
danke für die schnelle Antwort.
Wenn ich den Code wie unten eingebe, kommt die Fehlermeldung "Fehler beim Kompilieren End Sub erwartet" und er markiert die erste Zeile gelb.
Wie man sieht, kenne ich mich nicht aus ;-)
Viele Grüße
Marco

Private Sub TextBox1_Change()
Sub SuchenUndFinden()
Cells.Select
Frage = InputBox("wonach soll gesucht werden?")
Selection.Find(What:=Frage, After:=ActiveCell, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False).Activate
End Sub

End Sub
Anzeige
AW: Suche durch Textbox-Eingabe
25.08.2006 07:59:40
{mskro}
Hallo Marco,
es darf nur 1x "End Sub" drin stehen. Bei mir funktioniert es.
Gruss Manfred
Rückmeldung wäre nett!
AW: Suche durch Textbox-Eingabe
25.08.2006 10:16:43
mtremer
hm, leider auch nicht.
Es kommt bei jedem Eintrag ab dem ersten eingegebenen Zeichen die Fehlermeldung.
Auch beim löschen der Zeichen...
Was mache ich da falsch?
Viele Grüße
Marco
AW: Suche durch Textbox-Eingabe
25.08.2006 14:00:42
ingUR
Hallo, Marko,
Es wurden Dir hier zwei unterschiedliche Prozedurtypen vorgestellt.
Manfred lieferte Dir eine Modul-Prozedur, die Du nur ohne die beiden notwendigen Prozedurbegrenzerzeilen Sub und End Sub in Deine vorgefertigte "Hülle" einfügen darfst.
Private Sub TextBox1_Change
'<strike>Sub SuchenUndFinden()</strike>
Cells.Select
Frage = InputBox("wonach soll gesucht werden?")
Selection.Find(What:=Frage, After:=ActiveCell, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False).Activate
'<strike>End Sub</strike>
End Sub

Alternativ kannst Du bara auch eine Modulprozedur daraus machen, indem Du die Command-Event-Prozedurbegrenzer streichtst und den Code in den Modul-Ordner des Projektes einfügst.

'<strike>Private Sub TextBox1_Change()</strike>
Sub SuchenUndFinden()
Cells.Select
Frage = InputBox("wonach soll gesucht werden?")
Selection.Find(What:=Frage, After:=ActiveCell, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False).Activate
End Sub
'<strike>End Sub</strike>

Als Modul wird es mit einem Makroaufruf [Alt][F8] gestartet und wird so funktionieren, solange der Suchwert existiert (weiter Erweiterungen sind zu ergänzen).
Als Commandbutton_Click()-Prozedur, wie Du sie eigentlich erfragt hast - m.E. ist jedoch für das Springen zu einer bestimmten Tabellenposition die Makrofunkltion mit der Inputbox-Abfrage die vorzuziehende Lösung - so ist die Lösung von Chris (umgesetzt von Oberschlumpf; XLS-Datei hebe ich nicht geladen) vorzusehen, bei der jedoch die Form möglicherweise das Sprungziel verdeckt, da sie auf das nächste Kommando wartet und nicht geschlossen wird.
Gruß,
Uwe
Anzeige
AW: Suche durch Textbox-Eingabe
25.08.2006 14:22:10
mtremer
Hallo Uwe,
danke für die ausführliche Antwort.
Mir scheint aber, dass die Lösung von Chris/Oberschlumpf für meinen Zweck eher dient.
Im Moment funktioniert dies zwar nur bei einer neuen Excel-Datei.
Jedoch habe ich mich noch nicht so eingehend damit beschäftigt, dass es auch bei meiner bestehenden Datei klappt.
Das wird erst nächste Woche etwas...
Dennoch danke und ein schönes Wochenende.
AW: Suche durch Textbox-Eingabe
25.08.2006 16:18:05
ingUR
Nun, Marco,
wenn Du schreibst, daß Dir scheint, dass die Lösung von Chris / Thorsten Dir besser geeigent für Deine Zwecke scheint, dann wird das so sein. Aus Deiner Einleitungsfrage «Ist es möglich, mit einer solchen TextBox (oder einer anderen Variante) bei Eingabe in das Feld einen Wert suchen zu lassen? Ich habe vor, dass Excel dann auf genau die Zelle springt, die diesen Wert enthält.» war für mich nicht genau erkennbar, wie Du die Weiterferabeitung vorsehen möchtest.
Vielleicht hilft Dir folgender erster, abgespeckter Überblick dabei nachzuvollziehen, wie wo wann welche Prozeduren wirken, wenn sie denn richtig programmiert sind.
Einer Arbeitsmappe wird eine VBA-Projektmappe zugefügt, sobald man aus ihr den VBA-Editor aufgeruft, sofern sie noch nicht existiert. Diese VBA-Projektmappe ist also mit der Excel-Arbeitsmappe (Workbook) verbunden und wird mit ihr gespeichert, kann aber auch mit Zwischenstand der Projektbearbeitung ex VBA-Menü::Datei::Speichern [Strg][S] in VBA-Editor od. Symbol gespeichert werden.
In einem VBA-Projekt (Übersicht durch Ansicht::Projekt-Explorer oder [Strg][R]) gibt es standardmäßig einen Ordner für die Microsoft-Excel-Objekte, die immer ein Objekt mit den Objektnamen "DieseArbeitsmappe" und je ein Objekt für jede in der Arbeitsmappe enthaltenen Tabelle, z.B. für die erte Tabelle in der Ornung der Arbeitsmappe, die Doppelbezeichnung Tabelle1 (Tabelle1), wobei der in Klammern gesetzte Namen, den "Klarnamen", der auf dem Registerreiter zu lesen ist, enthält.
Über den VBA-Menüpunkt Ansicht::Eigenschaftenfenster oder Funktionstaste [F4] kannst du das Eigenschaftenfenster öffnen - wenn es denn nicht bereits offen ist -, in wechlem Du über die Einträge zu den Eigenschaften (Name) und Name ablesen und ggf. Deinen Wünschen anpassen kannst (zu beachten ist, das (Name) und Name hier im Eigenschaftenfenster bezüglich der Klammerung vertauscht gegenüber dem Projektfenster sind.
Zurück zum Projektfenster. Es können drei zusätzliche Objektodner nach Bedarf angelegt sein.
Auf dem Projekteinstiegspunkt dieses zur Arbeitsmappe gehörenden VBA-Projekts das Kontextmenü geöffnet oder im geöffneten Projekt über den Menüpunkt Einfügen angewählt, bietet sich die Möglichkeiten einen, zwei oder alle drei Objekttypen einzufügen, wobei beim ersten Anlegen zu einem Objekttyp, ein zugehöriger Objekttypenordner jangelgt wird, in der die Objekte gleichen Typs gesammelt werden.
Die drei Ordnertypen sind
  • UserForm (Ornder mit Benennung Formulare),
  • Modul (Ornder mit Benennung Module), und
  • KlassenModul (Ornder mit Benennung Klassenmodule).
    Jedes Objekt in einem der Objektorden (Excel-Objekte, Formulare, Module und Klassenmodule) verfügt über einen eigenen Codebereich (VBA-Editorbereich - Code-Fenster), wobei eine Userform über zwei Entwicklungsfenster verfügt, dem Objektbereich, in dem die visuellen Objekte des Formulars bearbeitet werden und den Code-Editierbereich.
    Da sich diese beiden Bereich das gemeinsame Codefenster Teilen, ist jeweils nur eine Ansicht möglich, das Wechseln kann über die Tastenkombination [Umsch][F7] vom Objekt- zum Codefenster oder mit [F7] vom Codefenster zum Objektfenster erfolgen.
    Nochmals betont wird, dass jedes Objekt in irgend einem der Objekteordner über seinen eigenen VBA-Bereich verfügt und über das Projekt an die betreffende Arbeitsmappe gebunden ist.
    Zudem ist bei dieser Strukturierung später daran zu denken, dass jedes Objekt auch über seinen eigenen Geltungsbereich verfügt, der nur unter bestimmten Voraussetzungen mit anderen Geltungsbereichen teilweise oder vollständig verbunden werden kann. Private und Public, lokal und gloabal werden in diesem Zusammenhang die Schlüsselworte und Begriffe sein.
    Soweit die lange Vorrede um zu erläutern, warum eine Modul/Objekt aus einer Arbeitsmappe X nicht ohne weiteres in der Arbeitsmappe Y funktionieren kann.
    Der erste Schritt der Übertragung eines Objektcodes in eine eigene Arbeitsmappe ist also der, ein identisches Objekt dort anzulegen und den Code dort hin zu kopieren. Eine weitere Möglichkeit ist die, das gewünschte Modul (geht jeweils nur einzeln) anzuwählen und die "Datei" unter dem Menüpunkt "Datei::Datei exportieren" oder dem Kontextmenüpunkt mit dem selben Namen in eine *.bas Datei auf einen Datenträger zu schreiben. Anschließen wird in das Projekt gewechselt, in das ddas Objekt eingetragen werden soll. Hier wird die gesicherte *.bas-Datei nun importiert.
    Sofern abweichende Bezeichner im Programmcode anzupassen sind, ist diese Tätigkeit auszuführen. Danach steht das Objekt zu Anwendung nun auch in dieser Arbeitsmappe zu Verfügung, es ist els eigenständiges Objekt mit ihr - und i.d.R. nur mit ihr verbunden. Änderungen an dieser Stelle wirken sich natürlich nicht auf das Urprungsobjekt in der anderen Arbeitsmappe aus.
    Nun hoffe ich, dass ich nicht zuviel vertrautes mitgelteilt habe, doch in Hinblick auf die Situation mit den aufeinaderfolgenden Doppelzeilen Sub und End Sub, ist vielleicht doch der eine oder andere Hinweis hilfreich auf Deinem Weg des Erkundens.
    Gruß,
    Uwe
  • Anzeige
    AW: Suche durch Textbox-Eingabe
    24.08.2006 15:33:13
    chris
    Hallo Marco, hilft dir das weiter ?
    Musst nur noch einen Commandbutton in deiner tabelle erstellen.
    
    Private Sub CommandButton1_Click()
    With Worksheets(1).Cells
    Set c = .Find(TextBox1.Value, LookIn:=xlValues)
    If Not c Is Nothing Then
    c.Select
    End If
    End With
    End Sub
    

    AW: Suche durch Textbox-Eingabe
    24.08.2006 15:44:44
    mtremer
    Hallo chris,
    leider passiert hier gar nichts...
    TextBox ist da, CommandButton und Verweis auf TextBox auch.
    ?
    Viele Grüße
    Marco
    AW: Suche durch Textbox-Eingabe
    24.08.2006 23:41:17
    Oberschlumpf
    Hi Marco
    Ich hab mal eine XL-Datei mit genau dem Code von Chris erstellt - funktioniert
    https://www.herber.de/bbs/user/36118.xls
    Gib mal z Bsp j in die Textbox ein.
    ...und...vergleiche diese Datei mit deiner - dann kannst du feststellen, was du falsch gemacht hast.
    Konnte ich helfen?
    Ciao
    Thorsten
    Anzeige

    300 Forumthreads zu ähnlichen Themen

    Anzeige
    Anzeige
    Anzeige

    Links zu Excel-Dialogen

    Beliebteste Forumthreads (12 Monate)

    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige