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

If target geht nicht

If target geht nicht
14.05.2020 10:58:22
Gast111
Ich hoffe jemand von euch kann mir helfen!
Ich finde den Fehler in meinem Code nicht.
Falls ich es wider nicht richtig hochgeladen habe tut es mir sehr leid.
  • 
    Private Sub Worksheet_Activate()
    If Target.Column = 13 Then 'Änderung in Spalte M
    If Target.Interior.ColorIndex = 3 Then 'rot markiert in spalte M
    lrow = Sheets("Erfassen").Range("A65536").End(xlUp).Row + 1 '1. freie Zeile wird ermittelt
    Range("A" & Target.Row & ":O" & Target.Row).Cut Sheets("Abgelaufen").Range("A" & lrow & ":O" _
    _
    & lrow) 'spalte ausschneiden und in anderem Register einfügen
    End If
    End If
    End Sub
    

  • Vielen Dank
    Gast111

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

    Betreff
    Datum
    Anwender
    Anzeige
    AW: If target geht nicht
    14.05.2020 11:02:58
    Hajo_Zi
    bei der Aktion gibt es kein Target
    GrußformelHomepage
    AW: If target geht nicht
    14.05.2020 11:09:25
    Gast111
    Danke für die schnelle Antwort
    Was muss ich genau anpassen und wo?
    Tut mir leid für die doofen Fragen bin noch voll am Anfang.
    Gruss
    AW: If target geht nicht
    14.05.2020 11:03:25
    SF
    Hola,
    verlinkst du bitte deine Fragen in den verschiedenen Foren gegenseitig?
    Danke.
    Gruß,
    steve1da
    AW: If target geht nicht
    14.05.2020 11:10:42
    Gast111
    Hallo
    Wenn du mir sagen kannst wie ich das machen kann werde ich das gerne machen
    Gruss Gast111
    Anzeige
    Crossposting
    14.05.2020 11:11:52
    Hajo_Zi
    muss nicht offen sein.
    Gruß Hajo
    AW: If target geht nicht
    14.05.2020 11:17:23
    SF
    Einen Link hier zur Frage im anderen Forum und umgekehrt.
    AW: If target geht nicht
    14.05.2020 11:09:54
    EtoPHG
    Hallo,
    Was erwartest du denn als Target? Die Variable ist weder als Übergabeparameter in dieser Ereignisprozedur vorhanden/möglich, noch hast du sie definiert.
    Wenn du auf Änderungs-Ereignisse in der Spalte M reagieren willst, musst du in der Modul der Tabelle dieses Ereignis einsetzen:
    Private Sub Worksheet_Change(ByVal Target As Range)
    
    Gruess Hansueli
    Anzeige
    AW: If target geht nicht
    14.05.2020 11:15:14
    Gast111
    Hallo
    Ich habe in der Spalte M eine Formel hinterlegt die mir die Daten die kleiner als Heute sind rot einfärbt.
    Nun möchte ich beim öffnen der Datei die Zeilen in der eine Rot markierte Zelle ist ausschneiden und in ein anderes Register einfügen.
    Danke viel mal für eure Bemühungen
    Gruss Gast111
    Crossposting
    14.05.2020 11:17:20
    Hajo_Zi
    muss nicht offen sein
    Gruß Hajo
    Dann setze den Autofilter ein
    14.05.2020 11:31:54
    EtoPHG
    Hallo,
    Excel gut?
    Wirf den Makrorekorder an und
    Setz den Autofilter ein, filtere auf Farben, kopier die verbleibenden Zeilen ins andere Register und lösche sie dann im Quellblatt.
    Den aufgezeichnetn Code so bearbeiten, dass keine .Selects und .Activates übrigbleiben.
    Gruess Hansueli
    Anzeige
    AW: Dann setze den Autofilter ein
    14.05.2020 11:59:57
    Gast111
    Danke für den Tipp
    Nun wirft das für mich neue Fragen auf!
    Mit was ersetze ich die .Selects und .Activates?
    Private Sub Worksheet_Activate()
    Sheets("Erfassen").Select
    Cells.Select
    Selection.AutoFilter
    ActiveWorkbook.Worksheets("Erfassen").AutoFilter.Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("Erfassen").AutoFilter.Sort.SortFields.Add(Range( _
    "M1:M300"), xlSortOnCellColor, xlAscending, , xlSortNormal).SortOnValue.Color = _
    RGB(255, 0, 0)
    With ActiveWorkbook.Worksheets("Erfassen").AutoFilter.Sort
    .Header = xlYes
    .MatchCase = False
    .Orientation = xlTopToBottom
    .SortMethod = xlPinYin
    .Apply
    End With
    Rows("2:2").Select
    Selection.Copy
    Sheets("Abgelaufen").Select
    ActiveSheet.Paste
    Sheets("Erfassen").Select
    Application.EnableEvents = True
    Application.ScreenUpdating = False
    Worksheets("Abgelaufen").Activate
    Dim last As Integer
    last = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row + 1
    Application.CutCopyMode = False
    Selection.Delete Shift:=xlUp
    Selection.AutoFilter
    End Sub
    
    Danke für die Hilfe
    Anzeige
    AW: Dann setze den Autofilter ein
    14.05.2020 13:15:11
    Daniel
    HI
    momentan machst du zwei Schritte:
    1. Wähle Objekt XY aus (Select: Rows("2:2").Select)
    2. Führe eine Aktion mit dem ausgewählten Objekt aus (Selection: Selection.Copy)
    das lässt sich in der Regel zu einem Schritt zusammenfassen in dem man direkt sagt:
    "Führe mit Objekt XY eine Aktion aus.
    sieht dann so aus dass aus
    
    Rows("2:2").Select
    Selection.Copy
    

    die Zeile wird
    
    Rows("2:2").Copy
    
    der Recorder muss das in dieser umständlichen Forml aufzeichnen, weil wir Mausschubser so arbeiten, aber in VBA kann man die Objekte immer direkt ansprechen.
    Daher sollte mit dem Recorder aufgezeichneter Code immer nach diesem Schema überarbeitet werden.
    Der Code wird dadurch
    - kürzer
    - besser lesbar
    - weniger Fehleranfällig
    - schneller in der Abarbeitung
    beim Einfügen sollte man aber nicht das normale Einfügen aufzeichnen (STRG+V), sondern das Excelspezifische, das man über das Kontextmenü - Inhalte Einfügen erreicht.
    beim normalen Einfügen (ActiveSheet.Paste) kann man das oben genannte Prinzip nicht anwenden sondern nur beim Inhalte einfügen.
    wenn du dann noch bei jedem Range-Objekt das Tabellenblatt dazu schreibst, musst du auch nicht mehr das Blatt aktivieren und der Code bearbeitet auch Blätter die nicht aktiv sind.
    Sheets("Erfassen").Rows(2).Copy
    

    auch das kürzt den Code, der Bildschirm flackert nicht mehr und das Application.ScreenUpdating = False wird in den meisten fällen überflüssig, bzw der Code wird dann so schnell, das zusätzliche Ausschalten der Bildschirmaktualisierung keinen merkbaren Effekt mehr hat.
    Gruß Daniel
    Anzeige
    AW: Dann setze den Autofilter ein
    14.05.2020 13:40:32
    Gast111
    Danke Daniel für die gute Erklärung!
    Leider bin ich hoffnungsvoll überfordert.
    Ich bin langsam verzweifelt weil es immer noch nicht geht.
    Wahrscheinlich ist mein gewollter Lösungsweg einfach der falsche.
    AW: Dann setze den Autofilter ein
    14.05.2020 14:13:01
    Gast111
    Ich habe einen anderen Code gefunden der funktioniert fast fehlerfrei
    Nur ein Problem habe ich noch.
    Es funktioniert nur wen ich im Datum Feld 12.05.2020 eingebe sobald ich 13.05.2020 eingebe funktioniert es nicht.
    Kann mir jemand sagen wo der Fehler liegt?
    Sub Schaltfläche2_Klicken()
    Dim lngLetzte As Long
    Dim lngZeile As Long
    With Worksheets("Abgelaufen")
    lngLetzte = IIf(IsEmpty(.Cells(.Rows.Count, 2)), .Cells(.Rows.Count, 2).End(xlUp).Row, .Rows. _
    Count) + 1
    End With
    With Worksheets("Erfassen")
    For lngZeile = IIf(IsEmpty(.Cells(.Rows.Count, 2)), .Cells(.Rows.Count, 2).End(xlUp).Row, . _
    Rows.Count) To 2 Step -1
    If .Cells(lngZeile, 13) 
    Danke viel mals!
    Anzeige
    AW: Dann setze den Autofilter ein
    17.05.2020 08:51:27
    Hajo_Zi
    Zu Deiner Datei kann ich nichts schreiben, was wohl daran liegt das ich nicht auf fremde Rechner schaue.Ich baue keine Datei nach.
    Sollte die Datei verlinkt werden?
    Wenn du an Stelle einer Demomappe deine Originalmappe hochladen willst, diese aber sensible Daten enthält, kannst du diese Daten
    http://www.ms-office-forum.de/forum/showthread.php?t=322895
    änderrn.
    Bilder lade ich mir nicht runter, da Excel damit nichts anfangen kann.
    http://www.excel-ist-sexy.de/bilder-statt-datei/
    Hochgeladene Bilder können zwar als solche in Excel importiert werden, sind jedoch bei der Lösung von Problemen nicht sehr hilfreich, da man die eigentlichen Daten nicht ohne große und zeitraubende Umwege direkt in die Tabelle übertragen kann.
    Das ist nur meine Meinung zu dem Thema.
    GrußformelHomepage
    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige