Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1560to1564
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

VBA Filter ändern

VBA Filter ändern
08.06.2017 10:45:59
jochen
Hallo,
zusammen.
Mit diesem Code verschiebe ich alle X in der Spalte J in das Tabellenblatt "gelöschte MA".
Private Sub CommandButton1_Click()
Rows("1:1").Select
Selection.AutoFilter
Dim TB2, LR1 As Long, LR2 As Long
Set TB2 = Sheets("gelöschte MA")
LR2 = TB2.Cells(TB2.Rows.Count, "A").End(xlUp).Row + 1
With Sheets("Leiharbeiter")
LR1 = .Cells(.Rows.Count, "A").End(xlUp).Row
If WorksheetFunction.CountA(.Range("J2:J" & LR1)) = 0 Then   'ÄNDERN WENN MEHR
MsgBox "Kein Datum vorhanden!"
Exit Sub
End If
If .AutoFilterMode Then .AutoFilterMode = False ' Autofilter ausschalten
.Range("A2:J" & LR1).AutoFilter Field:=1, Criteria1:="""""", Operator:=xlAnd   'Ä _
NDERN WENN MEHR
.Range("A2:J" & LR1).AutoFilter Field:=10, Criteria1:="X"    'ÄNDERN WENN MEHR +  ZAHL   _
_
11
.Range("A3:J" & LR1).Copy TB2.Range("A" & LR2) 'Zielzelle    'ÄNDERN WENN MEHR
.Range("A3:J" & LR1).EntireRow.Delete xlUp                   'ÄNDERN WENN MEHR
.AutoFilterMode = False
TB2.UsedRange.Value = TB2.UsedRange.Value 'ggf Formeln raus
End With
'Sortieren
With TB2
LR2 = .Cells(.Rows.Count, "A").End(xlUp).Row
.Sort.SortFields.Clear
.Sort.SortFields.Add Key:=.Range("J3:J" & LR2) _
, SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal     'ÄNDERN   _
_
WENN MEHR
.Sort.SortFields.Add Key:=.Range("A3:A" & LR2) _
, SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
.Sort.SetRange .Range("A2:J" & LR2)      'ÄNDERN WENN MEHR
.Sort.Header = xlYes
.Sort.MatchCase = False
.Sort.Orientation = xlTopToBottom
.Sort.SortMethod = xlPinYin
.Sort.Apply
End With
End Sub

ABER:
er nimmt die Zeilen mit X und wenn er aber kein X drin steht nimmt er alles mit rüber. ( Die Zeile ist eine Formel hinterlegt:
J3=WENN(F3="";"";WENN(DATUM(JAHR(F3);MONAT(F3)+3;TAG(F3)) Ich möchte gerne, das er nur die Zeilen mit X verschiebt. Sonst soll eine Meldung kommen ." kein X vorhanden"
Kann mir jemand helfen ?
Danke.

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

Betreff
Datum
Anwender
Anzeige
Oder
08.06.2017 11:53:52
Jochen
würde es Sinn machen das er vorher eine Abfrage in der Spalte J macht. Ist X vorhanden dann Makro weiter sonst Abbrechen mit der MSG nix?
Kann mir jemand helfen ?:-(
08.06.2017 14:32:08
Jochen
.
AW: Kann mir jemand helfen ?:-(
08.06.2017 14:40:26
ChrisL
Hi Jochen
Eine Beispieldatei und die Frage als offen kennzeichnen würde helfen.
cu
Chris
AW: Kann mir jemand helfen ?:-(
08.06.2017 16:22:07
jochen
Hallo Chris,
leider darf ich von der Arbeit aus nichts verschicken :-(
Der Code soll, WENN in der Spalte J ab J3 ( TB Leiharbeiter) ein X ist , dann soll die Zeile von A bis J in das TB " gelöschte MA" verschoben werden Ab Zeile3. Das ganze über einen Button.
Wenn kein X dann soll die Meldung kommen. Kein X vorhanden, es wird nichts verschoben.
Wäre das verständlich ?
Danke
Anzeige
Kann mir jemand helfen ?:-(
08.06.2017 15:48:47
Jochen
.
Kann mir jemand helfen ?:-(
08.06.2017 16:10:54
Jochen
.
AW: VBA Filter ändern
08.06.2017 15:19:28
Max2
Hallo,
ich arbeite immer sehr ungern in VBA mit den Filtern... und
da noch dazu kommt, dass du keine Beispiel Mappe bereit gestellt hast,
habe ich hier einen Code der glaube ich das gleiche macht:
Option Explicit
Sub a()
Dim ws As Worksheet, ws2 As Worksheet
Dim lRow, lRow_2
Dim i As Integer, counter As Integer
On Error Resume Next
Set ws = ThisWorkbook.Sheets("Leiharbeiter")
Set ws2 = ThisWorkbook.Sheets("gelöschte MA")
lRow = ws.Cells(Rows.Count, 10).End(xlUp).Row
i = lRow
With ws
Application.ScreenUpdating = False
Do
If .Cells(i, 10).Text = "X" Or .Cells(i, 10).Text = "x" Then
.Cells(i, 10).EntireRow.Copy
lRow_2 = ws2.Cells(Rows.Count, 10).End(xlUp).Row + 1
ws2.Cells(lRow_2, 1).PasteSpecial Paste:=xlPasteAll
.Cells(i, 1).EntireRow.Delete xlUp
counter = counter + 1
End If
i = i - 1
Loop Until i = 2
If counter = 0 Then MsgBox "Kein x Gefunden"
Application.ScreenUpdating = True
End With
End Sub

Anzeige
MAX2
08.06.2017 16:16:55
jochen
Hallo Max
Danke, aber der Code hängt sich auf leider :-(

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige