Zellen Kopieren und richtig einfügen- VBA
#1
Guten Tag zusammen,

ich habe ein Problem was ich irgendwie nicht lösen kann.

Eine 

Ich habe 3 Tabellenblätter und habe versucht mir selber ein Makro zu machen. Wenn ich das Makro ausführe kopiert das Makro in die letzte Tabelle immer die gleichen Zahlen also z.b  A1 bis A20,, anstatt die neuen Werte bei A21 einzufügen.

Zweites Problem: Nach dem kopieren lösche ich die kopierte Reihe, damit die nächste zur Verfügung steht. Bei meinem Makro löscht er aber immer an der gleichen Stelle, anstatt die nächste oben drüber zu nehmen. 

Drittes Problem: Eigentlich wie das zweite Problem.: Die dauerhaft markierten Zellen von Tab1 müssen nach dem löschen der letzten Zeile eine nach OBEN rutschen. 



Infos: Tab1 ist ein Tabellenblatt wo ich eine Markierung von Zellen hab. Die ändert sich nie. Die Zellen sind dauerhaft markiert und kopiere die Markierung und setzte Sie in Tabelle 4 ein.

         Tabelle4 sind die Zahlen. ca. 900 Reihen. Ich nehme die letzte Reihe von unten und sortiere sie. dann nehme ich einen Ausschnitt daraus und kopiere diese in Tabelle5. Nach dem Kopieren gehe ich wieder zur                 Tabelle4 und lösche die Reihe, damit die nächste Reihe von unten wählbar ist.

         Tabelle5 ist das Tabellenblatt wo die ganzen Zahlen hin kopiert werden sollen.


Jetzt noch eine Wichtige Sache: Tabelle4 hat 900 Werte. Ich muss die Werte von unten nach oben abarbeiten. Also von 900 zu 899 zu 898 usw. Deshalb lösche ich die Zeile nachdem Sie kopiert wurde, damit die nächste Reihe zu verfügung steht.

----------------------------------------------
Sub Makro1()
'
' Makro1 Makro
'

'
    Sheets("Tab1").Select
    Selection.Copy
    Sheets("Tabelle4").Select
    Range("A890").Select
    ActiveSheet.Paste
    Cells.Select
    Range("A876").Activate
    Application.CutCopyMode = False
    ActiveWorkbook.Worksheets("Tabelle4").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("Tabelle4").Sort.SortFields.Add Key:=Range("A1:BT1" _
        ), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets("Tabelle4").Sort
        .SetRange Range("A1:BT896")
        .Header = xlGuess
        .MatchCase = False
        .Orientation = xlLeftToRight
        .SortMethod = xlPinYin
        .Apply
    End With
    Range("AY890:BR895").Select
    Selection.Copy
    Sheets("Tabelle5").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Range("J10").Select
    Sheets("Tabelle4").Select
    Rows("887:887").Select
    Application.CutCopyMode = False
    Selection.Delete Shift:=xlUp
End Sub

----------------------------------------


Ich hoffe ein Profi kann diesen VBA CODE lesen. Ich kann es leider nicht. 

Ich würde mich riiiiiiiiiiiiiiiiiieeeeeeeesig freuen wenn einer den code so ändern könnte das die kopierten Werte fortlaufend sind und das die gelöschte Reihe auch von zB. 900 auf 899 rutscht und das die aus Tab1 gewählte Markierung auch eine nach oben rutscht.


Vielen lieben DANK fürs ansehen und ich ich hoffe das es nicht zu schwer für euch ist.
Top
#2
Hallöchen,

wenn Du einen Code aufzeichnest, solltest Du an alles denken, was Du auch vorher schon getan hast und was aber für die Ausführung nötig ist. Dein Code beginnt z.B damit, dass das Blatt gewechselt wird - das ist schon mal gut - und dann wird aber etwas bereits selektiertes gleich kopiert - nur ist die Frage, was. Hier wäre es gut gewesen, die Auswahl nochmal vorzunehmen.

Später kommt es so ähnlich
Sheets("Tabelle5").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
Du wechselst wieder das Blatt und fügst an einer bereits ausgewählten Stelle ein - weiß man auch nicht gleich, wo das ist Sad


Um etwas an vorhandene Daten anzufügen, musst Du erst mal die letzte belegte Zelle feststellen. Leider zeichnet Dir Excel so etwas nicht auf (gibt's 'ne Tastenkombi dafür).

Also, auf dem Blatt wo die Daten eingefügt werden nimmst Du für die Suche in Spalte A
lNeu=Cells(Rows.Count,1).End(XlUp).Row+1

Und zum Einfügen dann
Range("A" & lNeu)...

Probier's mal aus, dann sehen wir weiter. Spätestens wenn alles passt können wir den Code dann noch optimieren Smile
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Top
#3
Bug 
Guten Morgen zusammen!!

Vielen Dank für die schnelle Antwort schauan. 

Ich dachte mir,, das ich mal Bilder zeige, damit mein Problem verständlicher wird und was ich machen muss. Leider musste ich die Bilder verkleinern und die Tabelle kürzen. Somit sind die Zeilennummern aus dem Makro etwas verrutscht. Ich hoffe es wird trotzdem deutlich. Blush

lg


Angehängte Dateien Thumbnail(s)
       
Top
#4
Hallo Paula,
Hast Du meine Tipps schon ausprobiert?
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Top
#5
Moin!
Was mir am Bild auffiel:
  1. Zum Glück wurde die Upload-Grenze beschränkt!
    (Danke, André, hat [url=
    Dateiupload bitte im Forum! So geht es: Klick mich!
    Intervenieren[/url] dazu geführt?)
  2. Du zählst Farben; dies sollte man nicht machen, sondern die mathematischen Bedingungen zählen.
Bilder nutzen hier gar nichts!
Lade bitte mal die Excel-Datei hoch, dann kann man sich dies am lebenden Objekt anschauen.

Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Top
#6
@schauan, ich hab es probiert einzusetzen, aber ich denke das ich es falsch eingesetzt hab. Es ist eher so, das der VBA Code auch in Arabisch sein könnte und ich würde die ganzen ( &/$%$§ genauso verstehen. Ich habe von VBA keine Ahnung und es ist für mich sehr schwer zu verstehen, wo was reingesetzt wird.

Ich habe nur ne Vorstellung wie das Makro laufen soll, aber nicht wie es geht. Das Makro funktioniert ja bis zu dem Punkt, wenn er die Zeile löscht und dann zählt er nicht mehr hoch weil er immer an der gleichen Stelle alles setzt und unterm strich kommt Murks raus.

Ich bin mir sicher da gibt es eine Formel oder Begriff, der sagt, beim nächsten Durchgang spring eine Zeile nach oben.

@RPP63: Ich kann die Datei leider hier nicht veröffentlichen, so wie sie ist. Nicht böse sein.

-------------------------

Ich habe nochmal versucht den VBA Code zu verstehen,, und hab geschrieben was der Code "GLAUBE" ich macht. 

Ich glaube das ist wie beim Autofahren... irgendwann muss man nicht mehr auf die Gangschaltung schauen um zu sehen welcher Gang eingelegt ist. In dem Code muss ""nur"" an den Positionen ein Zähler rein, der sagt -1 oder nach dem löschen eine Zeile nach oben. Irgendwie so.

Nochmal allen Danke für die Mühe


Angehängte Dateien Thumbnail(s)
   
Top
#7
(14.10.2017, 11:57)paula99 schrieb: @RPP63: Ich kann die Datei leider hier nicht veröffentlichen, so wie sie ist. Nicht böse sein.

Du glaubst gar nicht, wie herzlich egal mir das ist.
Schließlich benötige ICH ja keine Hilfe.
Ein Mitforist hat dazu in seinem Blog einen netten Artikel veröffentlicht:

Dateiupload bitte im Forum! So geht es: Klick mich!
/

Ich wünsche weiterhin viel Erfolg und klinke mich hier aus.

Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Top
#8
Hola,

weiter geht es hier...

http://ms-office-forum.net/forum/forumdisplay.php?f=29

Gruß,
steve1da
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste