MS-Office-Forum
Google
   

Zurück   MS-Office-Forum > Microsoft Office > Microsoft Excel
Registrieren Forum Hilfe Alle Foren als gelesen markieren

Banner und Co.

Antworten
Ads Der Renner, 11 Entwicklertools für Access, Tipps & Trick und offene Datenbanken zum einzigartigen Preis.
Themen-Optionen Ansicht
Alt 13.01.2018, 16:44   #1
Boost12
MOF User
MOF User
Standard VBA - Letzte Zeile kopieren und darunter einfügen

Hallo und einen schönen Abend an alle

Ich habe da leider ein Problem und hoffe ihr könnt mir helfen.
Habe schon viele Foren durchstöbert, dabei auch gute Lösungen gefunden aber leider nicht genau das was ich benötige.

Ich möchte das wenn z.B. in Zelle D6 eine Zahl eingegeben und mit der Enter Taste bestätigt wird die ganze Zeile 6 in Zeile 7 kopiert wird.
Ich habe es schon so weit geschafft, das alle Zellen mit Formeln kopiert werden aber nicht die leeren Zellen mit Rahmenlinien.
Auch wird die Zeile 6 erst kopiert, wenn ich in D7 eine neue Zahl eingebe und nicht schon wenn ich die Enter Taste in D6 betätige.

Ich habe eine kleine Tabelle angefertigt und hänge sie mit an, das ihr mein Problem vielleicht besser versteht.

Denn wenn das mit dem Kopieren der ganzen Zeile nach dem betätigen der Enter Taste funktioniert kommen weitere Fragen/Probleme bei mir auf, die ich leider nicht geschafft habe zu lösen.

Ich habe in meiner Tabelle auch nochmal meine Probleme und Fragen niedergeschrieben.

Ich würde mich sehr freuen, wenn ihr mir helfen könnt. Ich bedanke mich schon mal. :-)
Angehängte Dateien
Dateityp: xlsm Zeile_einfügen.xlsm (39,1 KB, 14x aufgerufen)

Geändert von Boost12 (13.01.2018 um 18:01 Uhr).
Boost12 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 14.01.2018, 10:18   #2
Beverly
MOF Guru
MOF Guru
Standard

Hi,

meinst du so etwas:

Code:

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
  If Target.Column = 4 Then
    If Target.Count = 1 Then
        If Target <> "" Then
            If Target.Offset(-1, 0) <> "" And Target.Offset(1, 0) = "" Then
                Application.EnableEvents = False
                Range(Cells(Target.Row, 2), Cells(Target.Row, 23)).Copy Cells(Target.Row + 1, 2)
                Range(Cells(Target.Row + 1, 3), _
                    Cells(Target.Row + 1, 23)).SpecialCells(xlCellTypeConstants).ClearContents
                Cells(Target.Row + 1, 3) = Cells(Target.Row, 3) + 1
                Application.EnableEvents = True
            End If
        End If
    End If
  End If
End Sub

GrußformelBeverly's Excel - Inn

__________________

Bitte im Beitrag eine kurze Rückmeldung auch in dem Fall geben, wenn ein Problem gelöst wurde - dies hilft auch anderen Usern, wenn sie den betreffenden Thread lesen.
Möchtest du dich außerdem für die Hilfe bei der Lösung deines Problems bedanken? Das kannst du ganz einfach durch die Bewertung eines Beitrags (Schalter unten links).
Beverly ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 14.01.2018, 14:36   #3
Boost12
Threadstarter Threadstarter
MOF User
MOF User
Standard

Hallo Beverly

Ich danke dir, dein Code ist wirklich klasse und macht was ich gesucht habe.
Er ist viel viel kürzer als meiner und dazu noch besser. Ich danke dir.

Leider gibt es da noch ein Problem der Code funktioniert nicht mehr sobald ich den Blattschutz aktiviere.

Alle Zellen in denen eine Formel steht soll für den Anwender gesperrt und die Formel ausgeblendet werden.

Vielleicht gibt es dafür noch eine Lösung?!

Danke dir :-)
Boost12 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 14.01.2018, 15:00   #4
Beverly
MOF Guru
MOF Guru
Standard

Hi,

hebe den Blattschutz zu Beginn des Kopierens auf und setze ihn am Ende wieder:

Code:

            If Target.Offset(-1, 0) <> "" And Target.Offset(1, 0) = "" Then
                ActiveSheet.Unprotect
                Application.EnableEvents = False
                Range(Cells(Target.Row, 2), Cells(Target.Row, 23)).Copy Cells(Target.Row + 1, 2)
                Range(Cells(Target.Row + 1, 3), _
                    Cells(Target.Row + 1, 23)).SpecialCells(xlCellTypeConstants).ClearContents
                Cells(Target.Row + 1, 3) = Cells(Target.Row, 3) + 1
                Application.EnableEvents = True
                ActiveSheet.Protect
            End If

GrußformelBeverly's Excel - Inn

__________________

Bitte im Beitrag eine kurze Rückmeldung auch in dem Fall geben, wenn ein Problem gelöst wurde - dies hilft auch anderen Usern, wenn sie den betreffenden Thread lesen.
Möchtest du dich außerdem für die Hilfe bei der Lösung deines Problems bedanken? Das kannst du ganz einfach durch die Bewertung eines Beitrags (Schalter unten links).
Beverly ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 14.01.2018, 15:13   #5
Boost12
Threadstarter Threadstarter
MOF User
MOF User
Standard

Ah super, danke es funktioniert.

Jetzt geht das Problem leider weiter. Ich denke aber das kann man nicht lösen.
Der Code wird nicht ausgeführt, da ich die Arbeitsmappe für mehrere Benutzer freigeben möchte.
Boost12 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 14.01.2018, 15:15   #6
Beverly
MOF Guru
MOF Guru
Standard

Codes funktionieren auch in freigegebenen Arbeitsmappen, nur ändern kann man ihn nicht so lange die Mappe freigegeben ist.


GrußformelBeverly's Excel - Inn

__________________

Bitte im Beitrag eine kurze Rückmeldung auch in dem Fall geben, wenn ein Problem gelöst wurde - dies hilft auch anderen Usern, wenn sie den betreffenden Thread lesen.
Möchtest du dich außerdem für die Hilfe bei der Lösung deines Problems bedanken? Das kannst du ganz einfach durch die Bewertung eines Beitrags (Schalter unten links).
Beverly ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 14.01.2018, 15:21   #7
Boost12
Threadstarter Threadstarter
MOF User
MOF User
Standard

Wenn ich die Arbeitsmappe freigegeben habe, und eine Zahl in D6 eingeben, erhalte ich die Fehlermeldung

Laufzeitfehler 1004
Die Unprotect-Methode des Worksheet-Objektes konnte nicht ausgeführt werde.
Boost12 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 14.01.2018, 15:27   #8
Beverly
MOF Guru
MOF Guru
Standard

Hast du schon mal den Code mit dem Makrorekorder aufgezeichnet, wenn du in der freigegebenen Arbeitsmappe den Blattschutz aufhebst und wieder setzt?


GrußformelBeverly's Excel - Inn

__________________

Bitte im Beitrag eine kurze Rückmeldung auch in dem Fall geben, wenn ein Problem gelöst wurde - dies hilft auch anderen Usern, wenn sie den betreffenden Thread lesen.
Möchtest du dich außerdem für die Hilfe bei der Lösung deines Problems bedanken? Das kannst du ganz einfach durch die Bewertung eines Beitrags (Schalter unten links).
Beverly ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 14.01.2018, 15:43   #9
Boost12
Threadstarter Threadstarter
MOF User
MOF User
Standard

Habe es eben versucht aufzuzeichnen.
Habe den Rekorder gestartet und eine Zahl D6 eingegeben, dann wieder die Aufnahme beendet.
Jetzt bekomme ich im freigegebenen Modus die Fehlermeldung 1004
Anwendungs- oder objektdefinierter Fehler

Funktioniert der Code bei dir in einer freigegebenen Arbeitsmappe?


Private Sub Worksheet_Change(ByVal Target As Excel.Range)
ActiveSheet.Unprotect
If Target.Column = 4 Then
If Target.Count = 1 Then
If Target <> "" Then
If Target.Offset(-1, 0) <> "" And Target.Offset(1, 0) = "" Then
Application.EnableEvents = False
Range(Cells(Target.Row, 2), Cells(Target.Row, 31)).Copy Cells(Target.Row + 1, 2)
Range(Cells(Target.Row + 1, 3), _
Cells(Target.Row + 1, 31)).SpecialCells(xlCellTypeConstants).ClearContents
Cells(Target.Row + 1, 3) = Cells(Target.Row, 3) + 1
Application.EnableEvents = True
ActiveSheet.Protect
End If
End If
End If
End If
End Sub



Der Blattschutz kann doch nur aufgehoben werden, wenn die Mappe nicht freigegeben ist oder liege ich da gerade falsch?

Geändert von Boost12 (14.01.2018 um 16:15 Uhr).
Boost12 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 14.01.2018, 16:34   #10
Beverly
MOF Guru
MOF Guru
Standard

Da ich mich mit freigegebenen Arbeitsmappen nicht auskenne, habe ich gerade etwas recherchiert: Blattschutz kann man nur aufheben wenn die Arbeitsmappe nicht freigegeben ist. Du musst also entweder auf Freigabe verzichten oder das ganze anders lösen - z.B. wäre da die Möglichkeit, im Worksheet_SelectionChange-Ereignis eine Routone einzubauen, dass bei Zellen mit Formeln der Cursor stets in die nächste Zelle gesetzt wird. Dann kannst du auf Blattschutz komplett verzichten.


GrußformelBeverly's Excel - Inn

__________________

Bitte im Beitrag eine kurze Rückmeldung auch in dem Fall geben, wenn ein Problem gelöst wurde - dies hilft auch anderen Usern, wenn sie den betreffenden Thread lesen.
Möchtest du dich außerdem für die Hilfe bei der Lösung deines Problems bedanken? Das kannst du ganz einfach durch die Bewertung eines Beitrags (Schalter unten links).
Beverly ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 14.01.2018, 16:42   #11
Boost12
Threadstarter Threadstarter
MOF User
MOF User
Standard

Leider muss der Blattschutz rein und die Mappe freigegeben werden.
Sehr schade das es nicht geht aber ich danke dir für deine Hilfe.
Dein Code ist ja auch sehr gut und hilfreich. Danke nochmals

Dann versuche ich es irgendwie so zu lösen, das nur die Spalten X, Y, Z, AA, AB, AC, AD, und AE mit Formeln von der Zeile 6 in Zeile 7 kopiert werden, wenn in D7 die Eingabe mit der Entertaste bestätigt wird.

Mal schauen ob ich das hinbekomme oder hättest du dafür auch eine gute Idee? :-)
Boost12 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 14.01.2018, 16:46   #12
Beverly
MOF Guru
MOF Guru
Standard

Warum muss der Blattschutz rein? Ich hatte doch eine andere Lösungsmöglichkeit vorgeschlagen...


GrußformelBeverly's Excel - Inn

__________________

Bitte im Beitrag eine kurze Rückmeldung auch in dem Fall geben, wenn ein Problem gelöst wurde - dies hilft auch anderen Usern, wenn sie den betreffenden Thread lesen.
Möchtest du dich außerdem für die Hilfe bei der Lösung deines Problems bedanken? Das kannst du ganz einfach durch die Bewertung eines Beitrags (Schalter unten links).
Beverly ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 14.01.2018, 16:52   #13
Boost12
Threadstarter Threadstarter
MOF User
MOF User
Standard

Der Blattschutz muss rein, weil ich die Zellen mit Formeln sperren und ausblenden will. Die Anwender sollen nicht aus Versehen die Formeln löschen.
Boost12 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 14.01.2018, 16:55   #14
Beverly
MOF Guru
MOF Guru
Standard

Wie ich schon geschrieben hatte: das geht auch ohne Blattschutz!!


GrußformelBeverly's Excel - Inn
Angehängte Dateien
Dateityp: xlsm RE_Zeile_einfügen.xlsm (37,5 KB, 8x aufgerufen)

__________________

Bitte im Beitrag eine kurze Rückmeldung auch in dem Fall geben, wenn ein Problem gelöst wurde - dies hilft auch anderen Usern, wenn sie den betreffenden Thread lesen.
Möchtest du dich außerdem für die Hilfe bei der Lösung deines Problems bedanken? Das kannst du ganz einfach durch die Bewertung eines Beitrags (Schalter unten links).
Beverly ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 14.01.2018, 17:14   #15
Boost12
Threadstarter Threadstarter
MOF User
MOF User
Standard

Ach wow, super danke.
Dann hatte ich das eben nicht ganz verstanden, was du meintest.
Wusste gar nicht, dass man es auch so machen kann.
So kann man auch nicht die Zellen mit Formeln auswählen.

Tausend dank. Mir fällt ein Stein vom Herzen :-)


Kannst du mir zu Schluss noch erklären, was der neue Code genau macht.
Das ich es verstehe und nachvollziehen kann.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Cells(1).HasFormula Then Target.Offset(0, 1).Select
End Sub
Boost12 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Ads
Antworten


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Besucher: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge anzufügen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

vB Code ist An.
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist An.
Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:21 Uhr.


Partner und Co.
Access-Paradies -Alles rund um die Datenbank Microsoft Access -Code -Programme-Tools -Tipps   Kostenlose Tipps & Tricks, Downloads und Programme   www.kulpa-online.com - Tipps - Tricks - Tutorials - Meinungen - Downloads uvm...   vb@rchiv · Willkommen in der Welt der VB Programmierung   Access-Garhammer - Hier finden Sie jede Menge Beispiel-Datenbanken zu Access und mehr ...   mcseboard.de   Die Top Seite für Excel-VBA-Makros uvm.

Powered by: vBulletin Version 3.6.2 (Deutsch)
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

Copyright ©2000-2010 MS-Office-Forum. Alle Rechte vorbehalten.
Copyright ©Design: Manuela Kulpa ©Rechte: Günther Kramer
Eine Verwendung der Inhalte in anderen Publikationen, auch auszugsweise,
ist ohne ausdrückliche Zustimmung der Autoren nicht gestattet.
Beachten Sie bitte auch unsere Nutzungsbedingungen.