Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

"Suche" Makro
#1
Hallo zusammen,

ich bin neu hier und kenne mich in der Welt von Makros und VBA nur wenig aus.
Ich bin gerade dabei eine Art Lexikon zu erstellen und brauche ein Makro, dass die Suche nach einem Begriff oder einer Begriffbeschreibung erleichtert.

In Spalte B (ab Zeile 3) stehen die Begriffe und in Spalte C (ab Zeile 3) die dazugehörigen Beschreibungen.
Nun möchte ich in der Zelle B1 einen Button, der das Makro Suche auslöst und den Begriff, der in Zelle C1 eingeben wurde sucht.

Ich habe bereits folgendes:

Sub Suche()

    Dim RaFound As Range
    Dim LoLetzte As Long
    Dim sSearch As String
    Do
        sSearch = InputBox("Suchbegriff:", , "test")
        If sSearch = "" Then Exit Sub
        LoLetzte = IIf(IsEmpty(Range("C65536")), Range("C65536").End(xlUp).Row, 65536)
        Set RaFound = Range("B3:B" & LoLetzte).Find(sSearch, Range("B" & LoLetzte), , xlPart, , _
xlNext)
    '   kompletter Vergleich und Inhalt
    '    Set RaFound = .Range(.Cells(2, 10), .Cells(5753, 10)).Find(ActiveSheet.Cells(I, 54), _
    '        .Cells(5753, 10), xlValues , xlWhole, , xlNext)
        If Not RaFound Is Nothing Then
            Rows(RaFound.Row).Select
            Exit Do
        End If
    Loop
    Set RaFound = Nothing
End Sub


Ich möchte aber nicht diese "Inputbox" benutzen. Des Weiteren wäre es gut, wenn es die Möglichkeit der "Weitersuche" gibt und falls ein Begriff nicht vorhanden ist, eine Art "Pop-Up" erscheint mit der Nachricht "Begriff nicht vorhanden".

Ich hoffe jemand kann mir weiterhelfen.

Vielen Dank und viele Grüße

Carva
Antworten Top
#2
Hallo,

Zitat:Ich möchte aber nicht diese "Inputbox" benutzen. 

... und wie stellst Du Dir denn dann die Eingabe eines Suchbegriffes vor, wenn es keine Inputbox sein soll?
Denn irgendwie muß ja Dein Wunsch-PopUp dazu gebracht werden, aufzupoppen und anzuzeigen, daß der
Suchbegriff nicht vorhanden ist, oder was auch immer er anzeigen soll.
________________________________________________________________________
wer aufgibt, ohne es versucht zu haben, gibt einfach nur auf!

Grüße aus Norderstedt, Peter
Antworten Top
#3
Hallo [b]Käpt'n Blaubär,

[/b]wie bereits beschrieben, möchte ich gerne die Eingabe des Suchbegriff in der Zelle C1 vornehmen.

Viele Grüße

Carva

P.S. ein entsprechendes Makro habe ich. Ich bin leider nicht in Lage die beiden MAkros zu kombinieren, sodass ich das habe was ich benötige

Sub Suche()

     Dim Titel As String, C As Object
    
     Begriff = Range("C1")
     If Trim(Begriff) = "" Then Exit Sub
    
     Set C = ActiveSheet.Range(Cells(2, 1), Cells(Rows.Count, Columns.Count)).Find(What:=Titel, LookAt:=xlPart)
    
     If Not C Is Nothing Then
          C.Select
          MsgBox "Vorhanden"
     Else
          MsgBox "Nicht vorhanden"
     End If
End Sub
Antworten Top
#4
Hallo,

wenn der Button aus der ActiveX-SteuerelementBox ist, gehört der Code in die Tabelle, wo der Button ist.

Code:
Private Sub CommandButton1_Click()

   Dim RaFound As Range
   Dim LoLetzte As Long
   Dim sSearch As String
   Do
'        sSearch = InputBox("Suchbegriff:", , "test")
       sSearch = Range("C1").Value
       If sSearch = "" Then Exit Sub
       LoLetzte = IIf(IsEmpty(Range("C65536")), Range("C65536").End(xlUp).Row, 65536)
       Set RaFound = Range("B3:B" & LoLetzte).Find(sSearch, Range("B" & LoLetzte), , xlPart, , _
xlNext)
   '   kompletter Vergleich und Inhalt
   '    Set RaFound = .Range(.Cells(2, 10), .Cells(5753, 10)).Find(ActiveSheet.Cells(I, 54), _
   '        .Cells(5753, 10), xlValues , xlWhole, , xlNext)
       If Not RaFound Is Nothing Then
           Rows(RaFound.Row).Select
           Exit Do
       Else
           MsgBox "Der Begriff " & sSearch & " ist nicht vorhanden."
            Exit Do
       End If
   Loop
   Set RaFound = Nothing
End Sub
Gruß Stefan
Win 10 / Office 2016
Antworten Top
#5
Hallo,

Zitat:Ich bin leider nicht in Lage die beiden MAkros zu kombinieren, sodass ich das habe was ich benötige

welche zwei Makros? Ich sehe nur eins.
________________________________________________________________________
wer aufgibt, ohne es versucht zu haben, gibt einfach nur auf!

Grüße aus Norderstedt, Peter
Antworten Top
#6
Hallo Peter,

in meinem ersten Beitrag ist ein Code zu einem Suchmakro und in meiner Antwort ist ein anderer Code.
Für mich sind es zwei Makros oder ein Makro mit zwei verschiedenen Inhalten...



Die Frage ist ja auch eher, ob es möglich ist das zu bauen was ich in meinem Eröffnungspost beschrieben habe und nicht wie viele Makros, Codes o.ä. hier nun sind

Viele Grüße

Daniel
Antworten Top
#7
Hi Daniel,

(29.06.2016, 11:13)Carva schrieb: Die Frage ist ja auch eher, ob es möglich ist das zu bauen was ich in meinem Eröffnungspost beschrieben habe und nicht wie viele Makros, Codes o.ä. hier nun sind

die Lösung für die nicht gewünschte Inputbox ist folgende Zeile, anstelle Deiner eigenen:

Code:
'
       sSearch = Range("C1")    'ohne Inputbox
'       sSearch = InputBox("Suchbegriff:", , "test")     'mit Inputbox

verknüpft:
Option Explicit

Sub Suche()
   
   Dim RaFound As Range
   Dim LoLetzte As Long
   Dim sSearch As String
   Do
      sSearch = Range("C1")                   'ohne Inputbox 
      'sSearch = InputBox("Suchbegriff:", , "test")     'mit Inputbox 
      If sSearch = "" Then Exit Sub
      LoLetzte = IIf(IsEmpty(Range("C65536")), Range("C65536").End(xlUp).Row, 65536)
      Set RaFound = Range("B3:B" & LoLetzte).Find(sSearch, Range("B" & LoLetzte), , xlPart, , _
          xlNext)
      '   kompletter Vergleich und Inhalt 
      '    Set RaFound = .Range(.Cells(2, 10), .Cells(5753, 10)).Find(ActiveSheet.Cells(I, 54), _
          '        .Cells(5753, 10), xlValues , xlWhole, , xlNext) 
      If Not RaFound Is Nothing Then
         Rows(RaFound.Row).Select
         MsgBox "Vorhanden"
         Exit Do
      Else
         MsgBox "Nicht vorhanden, bitte Suchbegriff anpassen!"
         sSearch = InputBox("Suchbegriff:", , sSearch)     'mit Inputbox 
         Range("C1") = sSearch
      End If
   Loop
   Set RaFound = Nothing
End Sub
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste