Das Clever-Excel-Forum.de - Treffen
findet vom 15. - 17. September 2017 in Thüringen / Region Großer Inselsberg statt. Hotelbuchung ab sofort möglich.


Optimaler Code für eine Suchfunktion
#1
Hallo liebe VBA Experten,

im Rahmen einer Informatikaufgabe sollen u.a. auf einem Tabellenblatt nacheinander alle Zellen gefunden werden in denen das Wort "Buchungssatz" steht.

Alle Fundstellen sollen dann in einer Textbox aufgelistet werden.

Dafür habe ich eine Userform mit folgendem (voll funktionsfähigem) Code programmiert:

Code:
Sub CommandButton5_Click()
Dim vbS As String
TextBox2.MultiLine = True
Range("A1").Select

Cells.Find(What:="Buchungssatz", After:=ActiveCell).Activate
vbS = ActiveCell.Address

Do
TextBox2.Text = TextBox2.Text & ActiveCell.Value & vbNewLine
Cells.FindNext(After:=ActiveCell).Activate
If ActiveCell.Address = vbS Then Exit Do
Loop

End Sub

Der Code soll dabei so effizient wie möglich geschrieben werden, d.h. je weniger Programmierzeilen um so besser.

Der Lehrer meint,  mein Code ginge noch viel effektiver. Ich frage mich wie?!

Vielen Dank für eure Hilfe im voraus.
to top
#2
Hallo,

du könntest auf das Selektieren verzichten, weniger Codezeilen werden es wohl nicht.

Code:
Sub CommandButton5_Click()
   Dim vbS As String
   Dim rngTreffer As Range
  
   TextBox2.MultiLine = True
   'Range("A1").Select
  
   Set rngTreffer = Cells.Find(What:="Buchungssatz", LookIn:=xlValues, lookat:=xlWhole)
   If Not rngTreffer Is Nothing Then
      vbS = rngTreffer.Address
      
      Do
         TextBox2.Text = TextBox2.Text & rngTreffer.Value & vbNewLine
         Set rngTreffer = Cells.FindNext(rngTreffer)
      Loop While rngTreffer.Address <> vbS
   End If
End Sub
Gruß Stefan
Win 7 / Office 2007
to top
#3
Hallo Schülerin,

steht das Wort eventuell nur in einer Spalte?
Hast Du in Zeile 1 Überschriften?

Wenn Du beide Fragen mit ja beantworten kannst, könnte das eine Alternative sein:

Code:
   Range("A1").AutoFilter Field:=1, Criteria1:="Buchungssatz"
   TextBox2.Text = Range("a2:a" & Cells(Rows.Count, 1).End(xlUp).Row).SpecialCells(xlVisible).Address
Wenn das Wort in zwei oder mehr Zellen direkt untereinander steht, wird ein Zellbereich ausgegeben.
Nach den beiden Zeilen könntest Du noch den Autofilter zurücknehmen.
   \\\|///      Hoffe, geholfen zu haben.
   ( ô ô )      Grüße, André aus G in T  
 ooO-(_)-Ooo    (Excel 97-2016)
to top
#4
Hallo liebe Leute,

ich glaub ich liege mit meinem Code gar nicht mal so sehr daneben.
Aber vielen Dank für eure Mühe und eure Vorschläge.
Mal sehen was der Pauker sagt.
to top


Möglicherweise verwandte Themen...
Thema Verfasser Antworten Ansichten Letzter Beitrag
  Bestimmte Suchfunktion in Excel erstellen Excell 4 48 29.11.2016, 15:51
Letzter Beitrag: Excell
  VBA Suchfunktion andywww2 8 150 23.11.2016, 17:11
Letzter Beitrag: Gast 123
Lightbulb VBA Zeile in eine Arbeitsmappe kopieren wenn in der Zeile eine 1 steht Olossos 8 110 11.11.2016, 17:08
Letzter Beitrag: Kuwer
  Dropdownliste mit Suchfunktion optimieren Energizer123 6 127 21.10.2016, 12:56
Letzter Beitrag: Energizer123
  Eine Datei schließen, eine andere Öffnen GustavoWoltmann 1 121 14.09.2016, 14:20
Letzter Beitrag: schauan
  Suchfunktion mit Verweis veve 3 182 05.09.2016, 10:44
Letzter Beitrag: veve
  Suchfunktion Vollkontact 10 466 09.08.2016, 18:32
Letzter Beitrag: shift-del
  Suchfunktion Frage Luffy 12 437 30.07.2016, 08:02
Letzter Beitrag: Rabe
  Durch Klick auf eine Zelle soll sich eine Auswahltabelle öffnen max01 4 610 15.04.2016, 18:11
Letzter Beitrag: atilla
  Excel Suchfunktion Formel tino 3 592 14.04.2016, 09:45
Letzter Beitrag: tino

Gehe zu:


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