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

Makro Daten älter als 2 Monate in anderes Register

Makro Daten älter als 2 Monate in anderes Register
Markus
Hallo Excel-Profis
Ich bin auf der Suche nach einem Makro das folgendes veranlasst.
Ältere Beiträge (Datum Spalte A) als 2 Monate aus aktuellem Register (2011) in das Register Archiv verschiebt.
Bedingung: Nur die ohne Markierung.
Denkt bitte daran, dass wir uns langsam dem Jahr 2012 nähern.
Das Makro sollte also auch aus dem zukünftgen Register "2012" funktionieren.
Im Anhang die Musterdatei.
https://www.herber.de/bbs/user/77550.xlsm
Hoffentlich kann mir jemand helfen
Gruss Markus

16
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Makro Daten älter als 2 Monate in anderes Register
17.11.2011 20:08:21
Josef

Hallo Markus,
' **********************************************************************
' Modul: Modul1 Typ: Allgemeines Modul
' **********************************************************************

Option Explicit

Sub archivieren()
  Dim objSh As Worksheet, objArchiv As Worksheet
  Dim rng As Range
  Dim lngRow As Long, lngLast As Long
  
  If SheetExist(CStr(Year(Date))) Then
    Set objSh = Sheets(CStr(Year(Date)))
    Set objArchiv = Sheets("Archiv")
    With objSh
      lngLast = Application.Max(3, .Cells(.Rows.Count, 1).End(xlUp).Row)
      For lngRow = 3 To lngLast
        If .Cells(lngRow, 1).Interior.ColorIndex = xlNone And .Cells(lngRow, 1) < _
          DateSerial(Year(Date), Month(Date) - 2, Day(Date)) Then
          If rng Is Nothing Then
            Set rng = .Rows(lngRow)
          Else
            Set rng = Union(rng, .Rows(lngRow))
          End If
        End If
      Next
    End With
    If Not rng Is Nothing Then
      rng.Copy objArchiv.Cells(objArchiv.Rows.Count, 1).End(xlUp).Offset(1, 0)
      rng.Delete
    End If
  End If
  
  Set rng = Nothing
  Set objSh = Nothing
  Set objArchiv = Nothing
End Sub


Private Function SheetExist(ByVal sheetName As String, Optional Wb As Workbook) As Boolean
  Dim wks As Worksheet
  On Error GoTo ERRORHANDLER
  If Wb Is Nothing Then Set Wb = ThisWorkbook
  For Each wks In Wb.Worksheets
    If LCase(wks.Name) = LCase(sheetName) Then SheetExist = True: Exit Function
  Next
  ERRORHANDLER:
  SheetExist = False
End Function



« Gruß Sepp »

Anzeige
AW: Klappt wunderbar, Danke
17.11.2011 20:26:06
Markus
Hallo Sepp
Vielen Dank, bereits getestet und in der Hauptdatei integriert.
Gruss Markus
AW: Upps, Sorry
17.11.2011 20:36:59
Markus
Hallo Sepp
Klappt doch nicht ...
Makro hat 2 ältere Zeilen die rot und blau markiert sind auch verschoben.
Die sollten aber dort bleiben wo sie sind :-(
Gruss Markus
AW: Upps, Sorry
17.11.2011 20:58:48
Josef

Hallo Markus,
mein Code verschiebt keine gefärbten Zellen sofern die 1. Spalte auch eingefärbt ist und die Zellen nicht per bedingter Formatierung gefärbt sind.

« Gruß Sepp »

Anzeige
AW: Farben
17.11.2011 21:01:44
Markus
Hallo Sepp
Die Zellen sind per "Bedingten Formatierung" eingefärbt :-(
Kann man das Makro nicht dem entsprechend anpassen?
Gruss Markus
Im Prinzip schon, wenn du das kannst, Markus!
17.11.2011 21:18:20
Luc:-?
Gruß Luc :-?
AW: Im Prinzip schon, wenn du das kannst, Markus!
17.11.2011 21:40:58
Markus
Danke Luc, Sehr hilfreich
Gruss Markus
Das war leicht ironisch, Markus,
17.11.2011 21:48:47
Luc:-?
…denn das ist eines der kompliziertesten Xl-VBA-Themen, was man leicht herausfinden kann, wenn man nur ein wenig recherchiert. Im Archiv findest du dann neben Anderen auch einiges von mir zu dem Thema.
Ich empfehle dir als VBA-Anfänger also Nachbau-Abfrage der Bedingungen, die zu der bedingten Färbung führen. Das wäre die Standard-Verfahrensweise.
Alles klar? ;-)
Gruß Luc :-?
Anzeige
...und siehste, Sepp fragt schon danach! owT
17.11.2011 21:50:51
Luc:-?
:-?
AW: Farben
17.11.2011 21:42:50
Josef

Hallo Markus,
warum sind dann in deinem Beispiel die Farben fest gestetzt?
Wie lauten den die Bedingungen?

« Gruß Sepp »

AW: Farben
17.11.2011 22:19:53
Markus
Hallo Sepp
Anbei das Makro BedingteFormatierung:
' BedingteFormatierungErstellenNeu Makro
'
'
Selection.End(xlUp).Select
Range("A814").Select
Selection.End(xlUp).Select
Selection.End(xlUp).Select
Range("A3").Select
Range(Selection, Selection.End(xlDown)).Select
Range(Selection, Selection.End(xlDown)).Select
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlToRight)).Select
Range("A3:T1048576").Select
Cells.FormatConditions.Delete
Range("A3:T1048576").Select
Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
"=$N3:$N3="""""
Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
With Selection.FormatConditions(1).Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.Color = 255
.TintAndShade = 0
.PatternTintAndShade = 0
End With
Selection.FormatConditions(1).StopIfTrue = True
Range("A3:T1048576").Select
Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
"=$K3:$K3="""""
Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
With Selection.FormatConditions(1).Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.Color = 12611584
.TintAndShade = 0
.PatternTintAndShade = 0
End With
Selection.FormatConditions(1).StopIfTrue = True
Range("A3:T1048576").Select
Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
"=$B3:$B3="""""
Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
Selection.FormatConditions(1).StopIfTrue = True
Selection.End(xlToLeft).Select
Selection.End(xlDown).Select
Selection.End(xlDown).Select
Selection.End(xlUp).Offset(1, 0).Select
End Sub
Bei :
- Eingabe in Spalte B = ganze Zeile blau
- Eingabe in Spalte K = ganze Zeile rot
- Eingabe in Spalte N = ganze Zeile "keine Markierung"
Sorry, soweit habe ich gar nicht gedacht. Farbe gleich Farbe, was soll's :-(
Gruss Markus
Anzeige
AW: Farben
17.11.2011 22:57:08
Josef

Hallo Markus,
' **********************************************************************
' Modul: Modul1 Typ: Allgemeines Modul
' **********************************************************************

Option Explicit

Sub archivieren()
  Dim objSh As Worksheet, objArchiv As Worksheet
  Dim rng As Range
  Dim lngRow As Long, lngLast As Long
  
  If SheetExist(CStr(Year(Date))) Then
    Set objSh = Sheets(CStr(Year(Date)))
    Set objArchiv = Sheets("Archiv")
    With objSh
      lngLast = Application.Max(3, .Cells(.Rows.Count, 1).End(xlUp).Row)
      For lngRow = 3 To lngLast
        If .Cells(lngRow, 14) <> "" And .Cells(lngRow, 1) < _
          DateSerial(Year(Date), Month(Date) - 1, Day(Date)) And _
          Not (.Cells(lngRow, 2) = "" Or .Cells(lngRow, 11) = "") Then
          If rng Is Nothing Then
            Set rng = .Rows(lngRow)
          Else
            Set rng = Union(rng, .Rows(lngRow))
          End If
        End If
      Next
    End With
    If Not rng Is Nothing Then
      rng.Copy objArchiv.Cells(objArchiv.Rows.Count, 1).End(xlUp).Offset(1, 0)
      rng.Delete
    End If
  End If
  
  Set rng = Nothing
  Set objSh = Nothing
  Set objArchiv = Nothing
End Sub


Private Function SheetExist(ByVal sheetName As String, Optional Wb As Workbook) As Boolean
  Dim wks As Worksheet
  On Error GoTo ERRORHANDLER
  If Wb Is Nothing Then Set Wb = ThisWorkbook
  For Each wks In Wb.Worksheets
    If LCase(wks.Name) = LCase(sheetName) Then SheetExist = True: Exit Function
  Next
  ERRORHANDLER:
  SheetExist = False
End Function


Sub BedingteFormatierungErstellenNeu()
  
  With Range("A3:T" & Application.Max(3, Cells(Rows.Count, 1).End(xlUp).Row))
    .FormatConditions.Delete
    .FormatConditions.Add Type:=xlExpression, Formula1:="=UND($K3<>"""";$N3="""")"
    .FormatConditions(1).Interior.Color = 12611584
    .FormatConditions(1).StopIfTrue = True
    .FormatConditions.Add Type:=xlExpression, Formula1:="=UND($B3<>"""";$N3="""")"
    .FormatConditions(2).Interior.Color = 255
    .FormatConditions(2).StopIfTrue = True
  End With
  
End Sub



« Gruß Sepp »

Anzeige
AW: Farben
17.11.2011 23:13:53
Markus
Hallo Sepp
Jetzt ist es O.K., Super
Vielen Dank
Entschuldige bitte, dass ich das mit der "Bedingten Formatierung" nicht erwähnt habe. Ich dachte Farbe = Farbe ...
Gruss Markus
AW: Farben
17.11.2011 23:22:06
Josef

Hallo Markus,
kein Problem, im Code musst du "Month(Date) - 1" gegen "Month(Date) - 2" ersetzen, zum testen habe ich nur minus 1 Monat genommen.

« Gruß Sepp »

Anzeige
AW: Farben
17.11.2011 23:47:54
Markus
Hallo Sepp
O.K., Danke
und 4 wäre dann älter als 4 Monate ...
Von wo habt Ihr bloss all das Wissen, ich bin ja nicht der dümmste ... aber so was?
RESPEKT !
Gruss Markus
Na, dann lies mal im Archiv nach, ...
18.11.2011 00:19:06
Luc:-?
…Markus,
wir beschäftigen uns schon seit Jahren mit so etwas… ;-)
Gruß Luc :-?

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige