Filterfunktion in Makro und nur die Ergebnisse

Hallo zusammen,

ich bin auch recht neu, was die Makro und vba Programmierung angeht.

Ich habe eine Tabelle, wo in Spalte 1 ab Zeile 4 verschiedene Mail Adressen stehen.
Die Mail Adressen sind alle bis auf den Mittelteil identisch.

Beispiel Mail: [email protected] / [email protected]

Also nur der Städtename ist der unterschied in den Mail Adressen.

in Spalte 2 stehen ab Zeile 4 die dazu gehörigen Faxnummern.

Nun habe ich folgendes Makro erstellt.

Option Explicit
Dim AgS
Dim FaX
Dim AgS1
Dim FaX1
Dim AgS2
Dim FaX2
Dim AgS3
Dim FaX3
Dim AgS4
Dim FaX4
Dim AgS5
Dim FaX5
Dim AgS6
Dim FaX6
Dim ErgebniS

Sub test()

’ test Makro


Sheets(„Tabelle1“).Select
Range(„A1“).Select
ErgebniS = InputBox(„AGS Suche, Bitte vor und nach der Stadt * eingeben.“)
Columns(„A:A“).Select
Selection.AutoFilter
ActiveSheet.Range("$A$4:blush:A$37").AutoFilter Field:=1, Criteria1:=Array(ErgebniS), Operator:=xlFilterValues
ActiveCell.Offset(5, 0).Select
AgS = Selection
ActiveCell.Offset(0, 1).Select
FaX = Selection
ActiveCell.Offset(1, -1).Select
AgS1 = Selection
ActiveCell.Offset(0, 1).Select
FaX1 = Selection
ActiveCell.Offset(1, -1).Select
AgS2 = Selection
ActiveCell.Offset(0, 1).Select
FaX2 = Selection
ActiveCell.Offset(1, -1).Select
AgS3 = Selection
ActiveCell.Offset(0, 1).Select
FaX3 = Selection
ActiveCell.Offset(1, -1).Select
AgS4 = Selection
ActiveCell.Offset(0, 1).Select
FaX4 = Selection
ActiveCell.Offset(1, -1).Select
AgS5 = Selection
ActiveCell.Offset(0, 1).Select
FaX5 = Selection

Range(„A1“).Select
Selection.AutoFilter
MsgBox ("EMail " & vbTab & AgS & vbCrLf & "Fax " & vbTab & FaX & vbCrLf & "EMail " & vbTab & AgS1 & vbCrLf & "Fax " & vbTab & FaX1 & vbCrLf & "EMail " & vbTab & AgS2 & vbCrLf & "Fax " & vbTab & FaX2 & vbCrLf & "EMail " & vbTab & AgS3 & vbCrLf & "Fax " & vbTab & FaX3 & vbCrLf & "EMail " & vbTab & AgS4 & vbCrLf & "Fax " & vbTab & FaX4 & vbCrLf & "EMail " & vbTab & AgS5 & vbCrLf & "Fax " & vbTab & FaX5 & vbCrLf)

End Sub

Soweit so gut. Der Sinn des ganzen ist, dass es leider von verschiedenen Städten, noch zweigstellen gibt bzw im Beispiel Frankfurt einmal Frankfurt-Main und Frankfurt-Oder gibt.

Jetzt will ich, das das Makro mir in der Ergebnisliste alle Mailadressen und Faxnummern ausgibt, die zb. Frankfurt enthalten.

Die Filter Funktion wird auch vernünftig ausgeführt.

Nur bei der Afrage nach den Zellen, nimmt er auch die im Hintergrund liegenden Zellen und nicht das Ergebnis der Filterfunktion.

Wie kann ich es bewerkstelligen, dass er nur das Ergebnis der Filterfunktion anzeigt im Ergebnis und nicht die dazwischenliegenden Zellen.

Da ich ja auch nicht weiss, welche Zellen im Ergebnis angezeigt werden, kann ich keinen Zellbezug angeben.

Ich hoffe es ist einigermaßen verständlich ausgedrückt :wink:

Habe evtl schon an eine elseif Anweisung gedacht, weiss aber nicht wie ich dieses einbaue.

Vielen Dank für Eure Hilfe.

Hallo Mlc,

ich habe Zeile 4 als Titelzeile genommen, Daten ab Zeile 5.
Nachstehenden Code in ein Standardmodul, Modul1 o.ä.

Gruß
Reinhard

Option Explicit

Sub Test()
Dim ErgebniS As String, Zei As Long, Mail(1 To 100), Fax(1 To 100), Ber As Range
Dim Mldg As String
On Error Resume Next
With Worksheets("Tabelle1")
 Zei = .Cells(Rows.Count, 1).End(xlUp).Row
 ErgebniS = "\*" & InputBox("AGS Suche") & "\*"
 .Range("A4").AutoFilter
 .Range("$A$4:blush:A$" & Zei).AutoFilter Field:=1, Criteria1:=Array(ErgebniS)
 Set Ber = .Range("$A$5:blush:A$" & Zei).SpecialCells(xlCellTypeVisible)
 If Not Ber Is Nothing Then
 For Zei = 1 To Ber.Count
 Mail(Zei) = Ber.Cells(Zei, 1).Value
 Fax(Zei) = Ber.Cells(Zei, 1).Offset(0, 1).Value
 Mldg = Mldg & Mail(Zei) & vbTab & Fax(Zei) & vbLf
 Next Zei
 End If
 .Range("A4").AutoFilter
 If Mldg "" Then MsgBox Mldg
End With
End Sub