Anzeige
Archiv - Navigation
688to692
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
688to692
688to692
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Hilfe bei Autofilter-Methode

Hilfe bei Autofilter-Methode
02.11.2005 11:13:27
Hansy
Hallo Experten!
Ich habe hier eine Tabelle mit ca. 10.000 Datensätzen. in Spalte B steht ein Name und in Spalte G steht der Behandler.
Nun soll folgendes geschehen:
Der Autofilter wählt in Spalte G Zeile 1 den Behandler "MOL" aus und alle Einträge, die dann angezeigt werden, sollen in Spalte I ab Zeile 2 einen Platzhalter (z.b. "gg") erhalten. Ich hatte mir folgendes überlegt:

Sub hotline()
Dim bereich As Range
Dim s As String
If Not ActiveSheet.AutoFilterMode = True _
Then Range("A1").AutoFilter
Selection.AutoFilter Field:=7, Criteria1:="MOL"
s = InputBox _
("Geben Sie einen Platzhalter ein", _
"Platzhalter")
If s = "" Then Exit Sub
'hier fehlt der Rest des Quellcodes in dem der Platzhalter eingetragen wird
End Sub

Egal was ich versuche, es treten immer Fehlermeldungen auf. Kann jemand den Quellcode so ergänzen, dass die Platzhalter eingefügt werden? Das wäre super nett!
Gruß, Hansy

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Hilfe bei Autofilter-Methode
02.11.2005 13:05:19
WernerB.
Hallo Hansy,
wie gefällt Dir das?

Sub hotline()
Dim bereich As Range, _
s As String, _
laR As Long, i As Long
If Not ActiveSheet.AutoFilterMode = True _
Then Range("A1").AutoFilter
Selection.AutoFilter Field:=7, Criteria1:="MOL"
s = InputBox _
("Geben Sie einen Platzhalter ein", _
"Platzhalter")
If s = "" Then Exit Sub
laR = Cells(Rows.Count, 7).End(xlUp).Row
For i = 2 To laR
If Rows(i).EntireRow.Hidden = False Then
Cells(i, 9).Value = s
End If
Next i
End Sub

Viel Erfolg wünscht
WernerB.
P.S.: Dieses Forum lebt auch von den Rückmeldungen der Fragesteller an die Antworter !
Anzeige
AW: Hilfe bei Autofilter-Methode
02.11.2005 15:26:54
Hansy
Hallo! Funktioniert wunderbar! Vielen herzlichen Dank! Gruß, Hansy
AW: Hilfe bei Autofilter-Methode
02.11.2005 15:49:48
Hansy
Hallo nochmal!
Also, da ich verschiedene Behandler habe, habe ich die nötigen Code-Zeilen rauskopiert und auf den jeweiligen Behandler, insg. 11 Stück, umgestellt.
Nun habe ich noch 2 Fragen: Wenn ein Behandler nicht in der Autofilterliste erscheint. Bricht das Programm ab. Kann man das irgendwie umgehen? Der Behandler ist in diesem Datensatz nicht vorhanden, aber in einem anderen...
Die zweite Frage bezieht sich auf ein Problem, welches auftritt. Wenn ich einen Behandler nach dem Durchlaufen des Makros manuell filtere, sehe ich, dass 1045 Datensätze gefiltert wurden. Davon haben jedoch die letzten 5 Stück den Platzhalter nicht erhalten. Warum? Kann man das ändern?
Vielen Dank schonmal im Voraus!
Gruß, Hansy
Anzeige
AW: Hilfe bei Autofilter-Methode
03.11.2005 08:16:23
wernerB.
Hallo Hansy!
Zu 1.:
If WorksheetFunction.CountIf(Range("G:G"), "MOL") &gt 0 Then
Selection.AutoFilter Field:=7, Criteria1:="MOL"
End If

Zu 2.:
Der Autofilter kann 65536 Zeilen verwalten und filtern, allerdings kann er im DropDown nur 999 Zeilen darstellen. Wenn man mehr filtern will, muss man über "Benutzerdefinert" gehen oder den Spezialfilter verwenden.
Gruß
WernerB.
AW: Hilfe bei Autofilter-Methode
03.11.2005 10:13:50
Hansy
Hallo!
Werner, könntest du deinen Vorschlag zu 1) bitte in den Quelltext einfügen? Ich hab es selbst versucht, doch nun haben ALLE den Platzhalter bekommen und nicht nur bestimmte Leute. Hier der Code:

Sub hotline()
Dim bereich As Range
Dim s As String
Dim laR As Long, i As Long
If Not ActiveSheet.AutoFilterMode = True _
Then Range("A1").AutoFilter
Selection.AutoFilter Field:=7, Criteria1:="MOL"
s = InputBox _
("Geben Sie einen Platzhalter ein", _
"Platzhalter")
If s = "" Then Exit Sub
laR = Cells(Rows.Count, 7).End(xlUp).Row
For i = 2 To laR
If Rows(i).EntireRow.Hidden = False Then
Cells(i, 9).Value = s
End If
Next i
ActiveSheet.AutoFilterMode = False
End Sub

Vielen Dank im Voraus!
Gruß, Hansy
Anzeige
AW: Hilfe bei Autofilter-Methode
03.11.2005 10:44:11
WernerB.
Hallo Hansy,
hilft dir das weiter?
Ansonsten solltest du uns verraten, wie das Makro reagieren soll, wenn der Behandler "MOL" in der Spalte "G" nicht vorkommt.

Sub hotline()
Dim bereich As Range
Dim s As String
Dim laR As Long, i As Long
Dim ent As Byte
If Not ActiveSheet.AutoFilterMode = True Then _
Range("A1").AutoFilter
If WorksheetFunction.CountIf(Range("G:G"), "MOL") > 0 Then
Selection.AutoFilter Field:=7, Criteria1:="MOL"
Else
ent = MsgBox("Behandler 'MOL' nicht gefunden !" & vbCr & vbCr & _
"Makro-Abbruch ?", vbYesNo + vbQuestion, _
"Frage an " & Application.UserName & ":")
If ent = 6 Then Exit Sub
End If
s = InputBox _
("Geben Sie einen Platzhalter ein", _
"Platzhalter")
If s = "" Then Exit Sub
laR = Cells(Rows.Count, 7).End(xlUp).Row
For i = 2 To laR
If Rows(i).EntireRow.Hidden = False Then
Cells(i, 9).Value = s
End If
Next i
ActiveSheet.AutoFilterMode = False
End Sub

Gruß
WernerB.
Anzeige
AW: Hilfe bei Autofilter-Methode
03.11.2005 10:58:49
Hansy
Hallo!
Wenn der Behandler "MOL" in Spalte G nicht vorkommt, sollte das Makro den nächsten Behandler suchen und ihm den Platzhalter verpassen.

Sub hotline()
Dim bereich As Range
Dim s As String
Dim laR As Long, i As Long
Dim ent As Byte
If Not ActiveSheet.AutoFilterMode = True Then _
Range("A1").AutoFilter
If WorksheetFunction.CountIf(Range("G:G"), "ASH") > 0 Then
Selection.AutoFilter Field:=7, Criteria1:="ASH"
Else
ent = MsgBox("Behandler 'ASH' nicht gefunden !" & vbCr & vbCr & _
"Makro-Abbruch ?", vbYesNo + vbQuestion, _
"Frage an " & Application.UserName & ":")
If ent = 6 Then Exit Sub
End If
s = InputBox _
("Geben Sie einen Platzhalter ein", _
"Platzhalter")
If s = "" Then Exit Sub
laR = Cells(Rows.Count, 7).End(xlUp).Row
For i = 2 To laR
If Rows(i).EntireRow.Hidden = False Then
Cells(i, 9).Value = s
End If
Next i
ActiveSheet.AutoFilterMode = False
If Not ActiveSheet.AutoFilterMode = True _
Then Range("A1").AutoFilter
Selection.AutoFilter Field:=7, Criteria1:="CAS"
For i = 2 To laR
If Rows(i).EntireRow.Hidden = False Then
Cells(i, 9).Value = s
End If
Next i
ActiveSheet.AutoFilterMode = False
End Sub

Ich hatte mir das so überlegt. Danach folgen noch weiter Behandler. Nur bekommt jetzt wieder jeder Behandler, und nicht nur die, die ich wie hier im Falle von "CAS" herauskopiert habe, den Platzhalter.
Anzeige
AW: Hilfe bei Autofilter-Methode
03.11.2005 13:02:30
WernerB
Hallo Hansy,
in der Annahme, dass du den selben Platzhalter für alle Behandler verwenden willst, habe ich das Makro in eine Schleife (für die Behandler "ASH", "CAS" und "MOL") gepackt.
Die Schleife ist bei Bedarf ggf. relativ einfach erweiterbar.

Sub hotline()
Dim bereich As Range
Dim s As String, b As String
Dim laR As Long, i As Long, j As Long
s = InputBox _
("Geben Sie einen Platzhalter ein", _
"Platzhalter")
If s = "" Then Exit Sub
laR = Cells(Rows.Count, 7).End(xlUp).Row
If Not ActiveSheet.AutoFilterMode = True Then _
Range("A1").AutoFilter
For j = 1 To 3
Select Case j
Case 1
b = "ASH"
Case 2
b = "CAS"
Case 3
b = "MOL"
End Select
If WorksheetFunction.CountIf(Range("G:G"), b) > 0 Then
Selection.AutoFilter Field:=7, Criteria1:=b
For i = 2 To laR
If Rows(i).EntireRow.Hidden = False Then
Cells(i, 9).Value = s
End If
Next i
End If
Next j
ActiveSheet.AutoFilterMode = False
End Sub

Gruß
WernerB.
Anzeige
AW: Hilfe bei Autofilter-Methode
03.11.2005 16:41:31
Hansy
Hallo Werner! Wenn ich es richtig verstehe, muss ich nur, wenn ich noch mehr Behandler wünsche "For j = 1 to" beliebig ändern und unten für jeden Case den Behandler eintragen, richtig?
Hast mir sehr geholfen!
Vielen vielen Dank!
Gruß, Hansy
AW: Hilfe bei Autofilter-Methode
04.11.2005 07:24:38
WernerB.
Hallo Hansy,
die Sache mit der Schleifenerweiterung hast du richtig verstanden.
Vielen Dank für die Rückmeldung; es freut mich, wenn ich helfen konnte.
Ein schönes WE
wünscht
WernerB.

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige