Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1604to1608
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
Inhaltsverzeichnis

Autofiltern

Autofiltern
23.01.2018 18:10:13
Helmut
Hallo,
Ich habe das Problem einen aufgezeichneten Makro zu verallgemeinern, das heißt, das Kriterium zu definieren.
Ich eine Liste mit ca. 6000 Zeilen und suche ob in der betrachteten Zelle (Teil einer Zeile) mein Suchstring vorhanden ist.
Beispiel:
Suchstring: "HeaderDateien" (string). Aufgezeichneter Makroteil: "=*HeaderDateien*"
Die Suchstrings sind reine Textdateien.
Beispiele von Zelleninhalten:
Leerzeile
Daten_Titel(0, intI - 1) = Cells(intI, 1); Kriterium zB. Daten_Titel
Cells(1, 6) = "Attribut" ' " & Format(Date) & " " & Format(Time, "hh:mm ")
Cells(1, 7) = "Disk" 'Nummerierung speziell bei Disketten
Ablaufliste 16
erzeugt die erste Zeile
-----
Trotz zahlreicher Versuche fand ich kein geeignetes Kriterium. Manchmal funktioniert es, mal nicht.
Ich hoffe dass jemand mir helfen kann.
PS. Der Level bietet mir keine korrekte Antwortmöglichkeit, Besser wären zwei Level.
Ich: ich wollte VBA lernen; Excel bot mir den Untergrund und sinnvolle Hilfe, d.h. ich arbeite vorwiegen mit VBA, benutze Excel nur als Hilfe.

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Autofiltern
23.01.2018 20:56:12
onur
Trotz mehrmaligem Durchlesen weiß ich nicht, worum es überhaupt geht
AW: Autofiltern
24.01.2018 16:00:41
Helmut
Hallo,
ich versuche eine hoffentlich verständlichere Erläuterung:
Ich habe eine Liste mit ca. 4000 Zeilen, die ich filtern möchte mittels einer Schleife.
Mit einem aufgezeichneten Makro geht es sehr gut: ich gebe im Makroaufruf beim Aufzeichnen das zu suchende Wort ein, und der Automakro funktioniert wie erwartet. Das zu suchende Wort erscheint im Makro, als Teil des Kriteriums1. Das Ergebnis ist eine Liste, die das Suchwort in jeder Zeile enthält. Das aufgezeichnete Makro ist das Beispiel, das ich für meine Schleife verwenden will.---
Das zu suchende Wort, das Filterkriterium, habe ich aber nur in einer Tabelle von ca. 160 Zeilen. ich rufe also meine Tabelle auf speichere das Wort als 'Name' um es als Kriterium zu verwenden zu können. Wenn ich das Kriterium ergänze mit 'Name', einem String, ist das Ergebnis eine Liste die alle Zeilen mit Name enthält, nicht aber den Inhalt von 'Name'.
Wie muss ich das Kriterium strukturieren, damit der Inhalt von 'Name' verwendet wird?
Ich hoffe es jetzt verständlicher geworden.
Gruß Helmut
Anzeige
AW: Autofiltern
24.01.2018 16:59:31
onur
Und wo ist denn nun das makro?
Besser wäre die Originaldatei oder eine beispieldatei, die genauso aufgebaut ist wie die Originaldatei.
AW: Autofiltern
24.01.2018 17:18:54
KlausF
Hallo Helmut,
wenn ich Dich richtig verstanden haben sollte:
"Name" ist ein VBA-Codewort und darf deshalb nicht frei verwendet werden.
Besser ist "myName" oder ähnliches.
Den Inhalt der Zelle myName liest Du dann aus mit Range(myName).Value
War es das?
Gruß
Klaus
AW: Autofiltern
24.01.2018 17:22:18
onur
Du darfst vor allen Name nicht in Gänsefüschen setzen, wenn es eine variable ist.
Dazu kommt noch der Kommentar von von KlausF.
AW: Autofiltern
25.01.2018 00:03:41
Helmut
Hallo,
bisher kein Erfolg, anbei mein Code:
Sub Makroaufruf_in_Makros()        '23.01.2018
' Augerufene Makro listen
Dim lngI As Long
Dim lngJ As Long
Dim lngK As Long
Dim lngL As Long
Dim Kriteriumsname As String
Dim Name2 As String
Dim VB As Object
Dim Mak As Object
Dim MA As Object
Set VB = Sheets("VBA_Code")
Set Mak = Sheets("Makroaufrufe")
Set MA = Sheets("MA")
VB.Select
Cells.Select
For lngI = 17 To 169
Kriteriumsname = Mak.Cells(lngI, 2).Value
For lngJ = 1 To 3925
'      If VB.Cells(lngJ, 2).Value = Kriteriumsname Then
Selection.AutoFilter
ActiveSheet.Range("$A$1:$G$3925").AutoFilter Field:=2, Criteria1:= _
"=*Kriteriumsname*", Operator:=xlAnd
Selection.Copy
Sheets.Add After:=ActiveSheet
Range("A1").Select
ActiveSheet.Paste
Name2 = ActiveWorkbook.ActiveSheet.Name
Sheets("VBA_Code").Select
ActiveSheet.Range("$A$1:$G$3925").AutoFilter Field:=2
Selection.AutoFilter
Sheets(Name2).Select
Next
Next
End Sub
Der Anfang meiner Referenzdatei:
1 Start_Programm
2 Start_Zeitmessung
3 Zeitmessung
4 testFileList
5 FileList
6 Zeiten
7 Kopieren
8 BlattnameErzeugen
9 BlattTestenErstellen
10 BlätterSuchen
11 InhaltsverzeichnisErstellen
12 Einstellungen_InitDaten
13 HeaderTitel
14 DateienErstellenTest
15 DateienErstellen
16 HeaderDateien_org
17 HeaderDateien
18 VerzeichnisseErstellenTest
19 VerzeichnisseErstellen
20 HeaderVerzeichnis
Für den Test mit dem Makrorecorder wurde die Zeile 17 verwendet.
Der enstandene Filtercode:
ActiveSheet.Range("$A$1:$G$3925").AutoFilter Field:=2, Criteria1:= _
"=*HeaderDateien*", Operator:=xlAnd
In welcher Form muss ich die HeaderDateien dürch Kriteriumsname esetzen?
Viele Grüße und Dank für Euer Bemühen.
Helmut Bismark
Anzeige
AW: Autofiltern
25.01.2018 13:57:18
fcs
Hallo Helmut,
man muss Text und Variable durch Verketten "zusammenbasteln".
        ActiveSheet.Range("$A$1:$G$3925").AutoFilter Field:=2, Criteria1:= _
"=*" & Kriteriumsname" & *", Operator:=xlAnd
Gruß
Franz
AW: Autofiltern
26.01.2018 17:46:23
Helmut
Hallo fcs,
Dein Tipp war de Richtige, eigentlich hätte ich selbst darauf kommen müssen, aber manchmal sieht man den Wald vor lauter Bäumem nicht.
Herzlichen Dank.
Mit vielen Grüßen
Helmut

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige