Guten Morgen
In VBA soll...
eine ganze Zeile von Blatt 1 zu Blatt 2 springen, basierend auf dem Wert von Zelle C, der entweder die Nummer Eins (1) oder die Nummer Null (0) sein kann.
Wenn ich zum Beispiel die Zahl 0 in Zelle C3 eingebe, werden alle Daten in Zeile 3 automatisch aus Blatt 1 gelöscht und in Blatt 2 eingefügt.
In ähnlicher Weise wird durch Eingabe von 1 anstelle von 0 in Zelle C3 von Blatt 2 die Operation in die entgegengesetzte Richtung ausgeführt.
All dies unter Beibehaltung der bedingten Formatierung und Berechnungsformeln für jede Zelle.
Wie kann ich so etwas in VBA bewerkstelligen?
Bitte zu bedenken das ich kein VBA Profi bin, eher ein Schnippsler (Copy/paste syndrom).
Jede Hilfe ist Willkommen
Niko
Hi,
das kann man machen, sollte man aber nicht tun!
Erstens:
Wozu Daten auf zwei Blätter verteilen? Das erschwert nur jegliche Auswertung.
Üblicherweise ist die Antwort darauf: Weil ich es übersichtlicher finde, wenn "erledigte Aufgaben", "ausgelieferte Teile", "jede Abteilung"... ihr eigenes Blatt hat.
Die Gegenantwort: Dafür gibt des den Autofilter oder ein getrenntes Auswerteblatt, das die Daten per Formel aus dem Ursprungsblatt holt.
Zweitens:
Beim Kopieren / Verschieben können ganz leicht Fehler passieren.
Drittens:
Zitat:All dies unter Beibehaltung der bedingten Formatierung
Das führt ganz sicher dazu, dass die Datei ganz schnell extrem langsam wird.
Also lautet die Lösung:
Lass das mit den getrennten Blättern und verwende den Autofilter auf deine 0/1-Spalte und du bist glücklich.
Und wenn jetzt als Gegenargument kommt: Ja, aber das soll von Mitarbeitern benutzt werden können, die keine Ahnung von Excel haben. Dann kann ich nur sagen: entweder bringst du denen bei, wie der Autofilter funktioniert (ist wahrlich kein Hexenwerk!) oder due machst zwei benutzerdefinierte Ansichten mit den beiden Einstellungen des Autofilters und legst deren Aufruf auf jeweils einen eigenen Button. Das kann auch der Unbedarfte mit Hilfe des Makrorekorders erledigen.
Danke für dein Hinweis und Lösungsansatz, doch brauche es letztendlich in VBA für mein vorhaben.
Ein VBA code würde mir sehr weiterhelfen
Hi,
halte mich ruhig für arrogant oder auch einen Deppen, aber so lange du mir keinen vernünftigen Grund nennst, wieso du das machen
musst und daher einen VBA-Code benötigst, wirst du von mir nichts weiter hören.
Nur so viel: Du benötigst so etwas wie
Code:
Worksheet(xxx).Rows(yy).Copy Worksheet(zz).range(Rowe.count, 1).End(xlUp).EntireRow
und wenn es automatisch passieren soll, dann verwende das Worksheet_Change-Event.
Halte dich, weder noch ein anderen für arrogant oder sogar noch für ein Deppen.
Du hast bestimmt deine Gründe dich so zu positionieren, doch warum und wieso ich es so brauch möchte ich nicht benennen,
aus Gründen die nicht mit dir oder irgendeinen anderen hier im Forum zu tun hat.
Wie auch immer vielen Dank das du dir Zeit genommen hast für mein Anliegen, schätze ich sehr.
Muss mir wohl ein anderen Weg suchen um es so zu bewerkstelligen wie es möchte.
Danke nochmals
Niko
Hallo Niko,
im VBA-Modul von Blatt 1:
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
With Target.Cells(1)
If .Column = 3 Then
If .Value = 0 Then
.EntireRow.Cut Worksheets("Blatt 2").Cells(Rows.Count, 3).End(xlUp).Offset(1).EntireRow
.EntireRow.Delete
End If
End If
End With
End Sub
im VBA-Modul von Blatt 2:
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
With Target.Cells(1)
If .Column = 3 Then
If .Value = 1 Then
.EntireRow.Cut Worksheets("Blatt 1").Cells(Rows.Count, 3).End(xlUp).Offset(1).EntireRow
.EntireRow.Delete
End If
End If
End With
End Sub
Sry für die verspätete Antwort und Danke für die Antwort
…hätte nicht erwartet, dass ich eine Antwort bekommen…schön und Danke nochmals.
Habe den Code in dieser eingefügten Datei als Beispiel eingefügt, denn es kommt immer Fehler auf.
Datei:[
attachment=47476]
Wahrscheinlich mache ich irgendwo ein Fehler, wäre schön, wenn Sie sich mal die Datei anschauen mit dem Beispiel und mir sagen könnten wo ich den Fehler mache.
Danke,
Niko
Hi,
du solltest die Nachricht von Uwe genau lesen: Er schreibt
Zitat:m VBA-Modul von Blatt 1:
und
Zitat:im VBA-Modul von Blatt 2:
Du hast die Codes eben nicht in die genannten Module sondern in eigene Module gepackt.
Übrigens: Das zeugt davon, dass du nicht weißt, wie man mit VBA umgeht. Umso mehr möchte ich auf meine Antworten hinweisen und nochmals sagen, dass man keine Daten verschiebt, nur weil sich ein Zustand ändert.
Danke für deine Antwort.
Habe nie behauptet das ich etwas von VBA weiß.
Auch wenn ich scheitere – habe ich 10.000 Wege entdeckt, die nicht funktioniert haben.
(frei nach Thomas Alva Edison)
Danke nochmals an alle.