Office: (Office 2016) Wenn Bedingung erfüllt, Zeile in neues Blatt verschieben (VBA)

Helfe beim Thema Wenn Bedingung erfüllt, Zeile in neues Blatt verschieben (VBA) in Microsoft Excel Hilfe um das Problem gemeinsam zu lösen; Hallo zusammen, ich habe es über VBA Programmierung hinbekommen, das wenn ich eine Zeile unter Spalte "Erledigt" auf "Ja" setze das er mir diese in... Dieses Thema im Forum "Microsoft Excel Hilfe" wurde erstellt von Franky1970, 10. Februar 2023.

  1. Franky1970 hat Ahnung

    Wenn Bedingung erfüllt, Zeile in neues Blatt verschieben (VBA)


    Hallo zusammen,
    ich habe es über VBA Programmierung hinbekommen, das wenn ich eine Zeile unter Spalte "Erledigt" auf "Ja" setze das er mir diese in eine neues Blatt kopiert, funktioniert prima.
    Nur würde ich es jetzt gerne auf dem neuen Blatt umgekehrt machen, das wenn einer aus Versehen Erledigt auf "Ja" gesetzt hat, das ich im neuen Blatt auf "Nein" setze, die Zeile wieder in das ursprüngliche Blatt zurück geschoben wird, entsprechend der KW.
    Bekomme es leider selbständig nicht hin.
    Bitte um eure Hilfe!
     
    Franky1970, 10. Februar 2023
    #1
  2. Klaus-Dieter Erfahrener User
    Hallo,

    man kann einfache Dinge auch kompliziert machen. Da reicht doch eine Liste völlig aus, die kann man nach ja bzw. nein Filtern und alles ist OK.
     
    Klaus-Dieter, 10. Februar 2023
    #2
  3. Franky1970 hat Ahnung
    Hallo
     
    Franky1970, 10. Februar 2023
    #3
  4. Franky1970 hat Ahnung

    Wenn Bedingung erfüllt, Zeile in neues Blatt verschieben (VBA)

    ja, das ist das Problem, so wie du vorschlägst funktioniert das nicht.
    Das ist unsere interne Fertigungsliste, und sobald ein Teil gefertigt ist soll es von der Hauptseite verschwinden.
    So sehen alle die fertigen Teile auf dem 2. Blatt.
    Wie beschrieben kann der Fertigungsleiter oder einer seiner Mitarbeiter aus Versehen auf "Ja" setzen, dann ist der Eintrag weg.
    Die Datei enthält im Laufe des Jahres mal um die 5000 Einträge.
    Wäre nett wenn jemand helfen könnte.

    Dankeschön
     
    Franky1970, 10. Februar 2023
    #4
  5. Beverly
    Beverly Erfahrener User
    Hi Franky,

    weshalb machst du es nicht mit einer Abfrage, ob die Daten verschoben werden sollen? Dann sparst du dir den ganzen Aufwand, Daten wieder zurück übertragen zu müssen. Ein "Ja" kann man versehentlich schnell mal setzen, aber eine danach erfolgende Abfrage sollte einen schon aufmerksam machen:

    Code:
    Private Sub Worksheet_Change(ByVal Target As Range)
        Dim lngErste As Long
        Dim strJaNein As String
        If Target.Column = 8 Then
            If Target.Count = 1 Then
                If UCase(Target) = "JA" Then
                    strJaNein = MsgBox("Daten wirklich verschieben?", vbYesNo)
                    If strJaNein = vbYes Then
                        With Worksheets("gefertigte Teile")
                            lngErste = IIf(IsEmpty(.Cells(.Rows.Count, 1)), _
                            .Cells(.Rows.Count, 1).End(xlUp).Row, .Rows.Count) + 1
                            Rows(Target.Row).Copy
                            .Cells(lngErste, 1).PasteSpecial Paste:=xlValues
                            Rows(Target.Row).Delete shift:=xlUp
                        End With
                    End If
                End If
            End If
        End If
    End Sub
    

    Wenn Bedingung erfüllt, Zeile in neues Blatt verschieben (VBA) GrußformelWenn Bedingung erfüllt, Zeile in neues Blatt verschieben (VBA) Beverly's Excel - Inn
     
    Beverly, 10. Februar 2023
    #5
  6. Franky1970 hat Ahnung
    Hi Beverly,

    die Lösung ist natürlich der Hammer!!

    Ganz herzlichen Dank!
     
    Franky1970, 10. Februar 2023
    #6
  7. Franky1970 hat Ahnung
    Hi Berverly,
    ich habe mal wieder ein VBA Problem in meiner EXCEL Tabelle, bei der alten habe ich es wenigstens hinbekommen das es mir die Zeilen in ein bestimmtes Blatt verschiebt wenn die Bedingung erfüllt ist.
    Aktuell macht der mir das bei meiner EXCEL nicht.
    Könntest du bitte mal drüber schauen wo ich den Fehler eingebaut habe?

    Wenn ein Werkstatt-Projekt erledigt ist sollte es es in das Blatt "erledigte Wkst.Projekt schieben.
    Natürlich wieder mit deiner oben eingebauten, zusätzlichen Abfrage ob er wirklich verschieben soll.

    Es wäre nett wenn du mir nochmal helfend zur Seite stehen könntest.

    Danke vorab für deine Hilfe und ein schönes Wochenende.

    Gruß Franky
     
    Franky1970, 15. März 2024
    #7
  8. DL_
    DL_ PowerQuery Guru

    Wenn Bedingung erfüllt, Zeile in neues Blatt verschieben (VBA)

    Moin

    Vielleicht solltest du noch mal den Vorschlag von Klaus-Dieter in #2 in Erwägung ziehen.
    Zumindest hättest du dann neues "Problem" nicht.
     
  9. Franky1970 hat Ahnung
    Moin,

    wie schon weiter oben beschrieben geht das auf Grund der hohen Anzahl nicht, die Liste wird unübersichtlich.

    So sieht man welche Projekte abgeschlossen sind.

    Grüße
     
    Franky1970, 15. März 2024
    #9
    1 Person gefällt das.
  10. DL_
    DL_ PowerQuery Guru
    Die Anzahl spült keine Rolle.
    Und wenn man filtert sieht man auch welche Projekte abgeschlossen sind.
     
  11. HKindler
    HKindler Erfahrener User
    Pass auf, gleich kommt das Argument "Aber meine User sind so dumm, die wissen nicht , wie man den Autofilter benutzt"

    Hier mal noch eine andere Meinung/Klarstellung, die sich in dieser Form zwar auf Monatsblätter bezieht, aber im Grunde genau dasselbe meint: www.excel-ist-sexy.de/mehrere-tabellenblaetter-1-auswertung

    Nochmals: Lass die Daten auf einem Blatt, das ist schlicht und ergreifen einfacher und besser. Und falls du Bedenken wegen dem Autofilter hast: Eine Anwenderschulung wirkt Wunder.
    Falls es dennoch zu umständlich erscheint: Excel kennt auch benutzerdefinierte Ansichten, die sich auf Knopfdruck abrufen lassen. Oder mach dir Makros, die den Autofilter füttern statt Daten durch die Gegend zu kopieren. Das Hin- und Herkopierten ist viel zu Fehleranfällig.
     
    HKindler, 15. März 2024
    #11
  12. Franky1970 hat Ahnung
    So ganz kurz, das hat überhaupt nichts mit dumm zu tun oder das einer nicht kann oder will.
    Aber anscheinend kennen viele User hier unsere Gegebenheiten im Unternehmen, womit ich mich Frage, warum antwortet man dann überhaupt, oder Stand da irgendwo ich zwinge euch zu antworten?
    Das hat seinen Grund warum ich das gerne über VBA geregelt hätte, und damit Ende der Diskussion.

    Wenn jemand helfen will wäre ich sehr dankbar dafür, alle die nicht wollen, auch Recht.

    Schönes Wochenende.
     
    Franky1970, 15. März 2024
    #12
    2 Person(en) gefällt das.
  13. HKindler
    HKindler Erfahrener User

    Wenn Bedingung erfüllt, Zeile in neues Blatt verschieben (VBA)

    Die Erfahrung zeigt, dass man mit der Zeit betriebsblind wird und daher bessere Lösungen schlicht nicht mehr wahrnimmt.
    Übrigens ist das Argument: „will ich so, machen wir schon immer so, basta“ genauso typisch wie „meine User kapieren das nicht“.

    Brauchst dich übrigens nicht weiter über mich zu ärgern, ich werde dazu jetzt nichts mehr schreiben.
     
    HKindler, 15. März 2024
    #13
  14. Beverly
    Beverly Erfahrener User
    Hi Frank,

    der Code kann deshalb nicht funktionieren, weil er in deiner 1. Mappe ausgelöst wird, wenn in Spalte H mit der Zeile If Target.Column = 8 Then der Begriff "ja" (bzw. "JA") eingetragen wird - Zeile If UCase(Target) = "JA" Then. Und in deiner jetzigen Mappe heißt deine Zieltabelle nicht mehr "gefertigte Teile" sondern "erledigte Wkst. Projekte". Dies alles muss natürlich entsprechend angepasst werden. Außerdem soll der Code für mehrere Tabellenblätter gültig sein - damit er nicht in die Codemodule jedes Blattes eingetragen werden muss, kann man ihn entsprechend umschreiben, sodass er gleichzeitig für alle Blätter gilt - dazu benutzt man dann nicht mehr das Worksheet_Change-Ereignis des Tabellenblattes sondern das Workbook_SheetChange-Ereignis, welches dann (nur) im Codemodul DieseArbeitsmappe stehen muss, da es ja für die gesamte Arbeitsmappe gelten soll. Allerdings muss dabei beachtet werden, dass du 2 Blätter hast, in denen der Code nicht ausgeführt werden soll - diese muss man dann natürlich ausnehmen. Das macht man am besten mit einer Select Case-Anweisung. Der komplette Code sieht dann so aus:

    Code:
    Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
        Dim lngErste As Long
        Dim strJaNein As String
        Select Case Sh.Name
            Case "erledigte Wkst. Projekte", "Konstanten"
                'mache nichts wenn diese beiden Blätter
            Case Else
                'für alle anderen Blätter
                If Target.Column = 7 Then
                    If Target.Count = 1 Then
                        If UCase(Target) = "ERLEDIGT" Then
                            strJaNein = MsgBox("Daten wirklich verschieben?", vbYesNo)
                            If strJaNein = vbYes Then
                                With Worksheets("erledigte Wkst. Projekte")
                                    lngErste = IIf(IsEmpty(.Cells(.Rows.Count, 1)), _
                                    .Cells(.Rows.Count, 1).End(xlUp).Row, .Rows.Count) + 1
                                    Range(Cells(Target.Row, 1), Cells(Target.Row, 7)).Copy
                                    .Cells(lngErste, 1).PasteSpecial Paste:=xlValues
                                    Rows(Target.Row).Delete shift:=xlUp
                                End With
                            End If
                        End If
                    End If
                End If
        End Select
    End Sub
    Außerdem ist mir aufgefallen, dass in deiner Gültigkeitsliste in Spalte G sehr viele Leerzeilen sind, weil du als Quelle =Konstanten!$E$2:$E$20 angegeben hast und nur die Zelle E2:E6 tatsächlich mit Daten belegt sind. Wenn du dir nicht sicher bist, ob irgendwann mal weitere Bemerkungen hinzukommen sollen, dann solltest du den Bereich für die Quelle dynamisch gestalten, damit nur die tatsächlich gefüllten Zellen angezeigt werden und keine Leerzeilen. Das kannst du realisieren, indem du im Namensmanager (Register Formeln) einen Namen definierst (z.B. "Bemerkung") und unter "Bezieht sich auf:" diese Formel eingibst: =Konstanten!$E$2:INDEX(Konstanten!$E:$E;ANZAHL2(Konstanten!$E:$E);1). In jeder Gültigkeitszelle musst du außerdem anstelle =Konstanten!$E$2:$E$20 nun dieses eintragen =Bemerkung - das lässt sich ja relativ schnell auf jedem Blatt ausführen, indem du beim Eintragen in die erste Zelle das Häkchen setzt bei "Änderungen auf alle Zellen mit den gleichen Einstellungen anwenden".


    Wenn Bedingung erfüllt, Zeile in neues Blatt verschieben (VBA) GrußformelWenn Bedingung erfüllt, Zeile in neues Blatt verschieben (VBA) Beverly's Excel - Inn
     
    Beverly, 16. März 2024
    #14
  15. Franky1970 hat Ahnung
    Hallo Beverly,

    ich habe jetzt alles nach deiner Anleitung gemacht, auch noch mal auf Abstände und Schreibweise geachtet, das Makro funktioniert nicht.
    Ich bekomme es nicht hin, keine Ahnung warum.
    Bei meiner ersten EXCEL mit VBA habe ich es hinbekommen.
    Das ist halt das Problem wenn man nicht täglich mit EXCEL schafft, bzw. schaffen muss.
    Könntest du bitte nochmal drüber schauen?

    Danke vorab für deine Mühe und ein schönes Wochenende.

    Gruß Franky
     
    Franky1970, 16. März 2024
    #15
Thema:

Wenn Bedingung erfüllt, Zeile in neues Blatt verschieben (VBA)

Die Seite wird geladen...
  1. Wenn Bedingung erfüllt, Zeile in neues Blatt verschieben (VBA) - Similar Threads - Bedingung erfüllt Zeile

  2. Zeilen kopieren wenn Bedingung erfüllt

    in Microsoft Excel Hilfe
    Zeilen kopieren wenn Bedingung erfüllt: Hallo Zusammen Ich arbeite aktuell an einem umfangreichen Haushaltsbuch (als doppelte Buchhaltung geführt) und stehe bei einem kleinen Problem an. Im Tabellenblatt 1 führe ich das Buchungsjournal...
  3. Zeilen verschieben/löschen wenn Bedingung erfüllt wurde

    in Microsoft Excel Hilfe
    Zeilen verschieben/löschen wenn Bedingung erfüllt wurde: Hallo liebe gemeinde ich hab leider das problem, das ich kein gescheites makro hinbekommen in meiner Excel. Ich hätte gerne das wenn in Spalte G der Wert "Picked UP" ausgewählt wird, diese Zeile...
  4. mehrer Zeilen zurückgeben nach erfüllter Bedingung

    in Microsoft Excel Hilfe
    mehrer Zeilen zurückgeben nach erfüllter Bedingung: Hallo, ich stehe vor folgenden Problem.Ich will eine Art Bon Analyse machen. Die Aufgabe vor der ich hier stehe und aktuell nicht weiterkomme ist folgende: Wenn 2 gleiche Werten in Spalte C sind,...
  5. Zeilen automatisch sperren mittels VBA (wenn Bedingung erfüllt)

    in Microsoft Excel Hilfe
    Zeilen automatisch sperren mittels VBA (wenn Bedingung erfüllt): Moin zusammen, folgendes Problem: Im Normalfall verzichte ich aus Gründen auf den Einsatz von VBA, aber dieses Mal komme ich nicht umher. Ich habe schon fleißig recherchiert und mich versucht,...
  6. Excel - ganze Zeile in anderes Blatt verschieben, wenn Bedingung erfüllt

    in Microsoft Excel Hilfe
    Excel - ganze Zeile in anderes Blatt verschieben, wenn Bedingung erfüllt: Hallo zusammen Ich bin leider ein absoluter Excel-Banause und habe folgendes Problem: Ich habe eine Materialliste für Baugespanne. Dabei möchte ich mit zwei Blättern arbeiten (Baugespanne...
  7. Zeile in 2. Exceldatei kopieren wenn Bedingung erfüllt ist

    in Microsoft Excel Hilfe
    Zeile in 2. Exceldatei kopieren wenn Bedingung erfüllt ist: Hallo! Wir haben eine Excel-Quelldatei. Aus dieser sollen nur Zeilen in eine 2. Datei kopiert werden, wenn in der Quelle eine Bedingung erfüllt ist (Wert Spalte C = "123XYZ"). Am besten soll...
  8. Zeile Ausblenden wenn Bedingung erfüllt ist

    in Microsoft Excel Hilfe
    Zeile Ausblenden wenn Bedingung erfüllt ist: Guten Morgen, ich habe mir schon vieles durchgelesen - finde aber leider nicht das passende für mich. Ich habe auch eine Excel Mappe mit Kundenanfragen. Um die Mappe übersichtlich zu halten...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden