Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Zeile löschen, Tabellenblatt in andere Mappe

Zeile löschen, Tabellenblatt in andere Mappe
Bowl
Teilweise mit Makro Aufzeichnen, teils aus Tipps selbstzusammengebastelt, klappen tut des ganze Teilweise klappt des ganze; das wichtigste nur:
Blatt muss an letzte Stelle der anderen Mappe verschoben werden.
Beim löschen der entsprechenden Zeilen (die Zeilen in der in B der Blattname des verschobenen Sheets bzw der Wert aus B3 der verschobenen Sheets) muss die Zeile gelöscht werden/oder der Inhalt, darunterliegendes Zeug um eins nach oben verschoben werden und am besten eine Zeile vor der Zeile 70 wieder eingefügt werden (damit die Summen die in Zeile 70 stehen wirklich erst in Zeile 70 stehen und nicht mit der Zeit immer weniger Platz für neue eintragungen bliebt)
Die Buttons auf dem Tabellenblatt, dass kopiert wird müssen gelöscht werde
Code:

Sub auftragloeschen()
Dim WS As Worksheet
Dim y, i As Integer
Dim tmp As Long
Application.ScreenUpdating = False
If MsgBox("Das Löschen hätte zur Folge, dass dieser Auftrag in der Gesamtplanung nicht mehr  _
Berücksichtigt werden würde." & vbCrLf & "Dieses Planungsblatt würde in die Datei Archiv verschoben werde" & vbCrLf & "Wirklich entfernen?", vbQuestion + vbOKCancel) = vbOK Then
tmp = ActiveSheet.Cells(3, 2).Value
Application.DisplayAlerts = False
Dim myShape As Shape
For Each myShape In ActiveSheet.Shapes
myShape.Delete
Next
ChDir _
"C:\xyc\Planung 1"
Workbooks.Open Filename:= _
"C:xyc\Planung 1\Archiv.xls"
Windows("Auftragsplanung.xls").Activate
Sheets(tmp).Select
ActiveSheet.Move After:=Workbooks("Archiv.xls").Sheets(i)
ActiveWorkbook.Save
ActiveWindow.Close
Windows("Auftragsplanung.xls").Activate
ActiveWindow.ScrollWorkbookTabs Position:=xlFirst
Sheets("Vorlage").Select
ActiveWorkbook.Save
Application.DisplayAlerts = True
For Each WS In Worksheets
If InStr(WS.Name, "A_") = 1 Then
With WS
For y = 10 To .Cells(.Rows.Count, 2).End(xlUp).Row '200
If .Cells(y, 2) = tmp Then
.Unprotect
.Rows(y).Delete
.Rows(70).Select
Selection.Insert Shift:=xlDown
Exit For
End If
Next y
End With
End If
Next WS
End If
Application.ScreenUpdating = True
Sheets("Vorlage").Activate
Sheets("Vorlage").TextBox1.Value = ""
End 

Sub


		
Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
wird sofort erledigt.........
08.07.2009 08:12:35
xyz
AW: Aber flott !!!
08.07.2009 09:25:43
Chef
Teilweise Lösung: Verschieben noch Offen
08.07.2009 09:50:56
Bowl
Teil mit Zeile löschen und neu einfügen klappt jetzt Problemlos

For Each ws In Worksheets
If InStr(ws.Name, "A_") = 1 Then
With ws
For y = 10 To .Cells(.Rows.Count, 2).End(xlUp).Row '200
If .Cells(y, 2) = tmp Then
.Unprotect
.Rows(y).Delete Shift:=xlUp
.Rows("70:70").Insert Shift:=xlDown
Exit For
End If
Next y
End With
End If
Next ws


Wird Zeile gelöscht, nach oben verschoben und neue Zeile unten angehängt.
Problem ist immer noch, Blatt an Ende von Archiv.xls zu hängen

Anzeige
AW: Zeile löschen, Tabellenblatt in andere Mappe
08.07.2009 10:59:45
Bowl
ActiveSheet.Move After:=Workbooks("Archiv.xls").Sheets(1)
wird ja das Blatt hinter Blatt 1 verschoben.
a = ActiveWorkbook.Sheets.Count
werden die blätter gezählt (oder etwa doch nicht?)
und mit
ActiveSheet.Move After:=Workbooks("Archiv.xls").Sheets(a)
würden doch Aktive Blätter hinter Sheet a verschoben werden müssen...
zumindest in der theorie, in der Praxis klappts halt doch nicht.
sind auch die jeweiligen Blätter/Mappen im richtigen moment Aktiv
Anzeige
Tabellenblatt in andere Mappe
08.07.2009 11:08:52
Bowl
mir fehlt definitiv nachträgliche editieren funktion xD

tmp = ActiveSheet.Cells(3, 2).Value
Application.DisplayAlerts = False
ChDir "C:\Dokumente und Einstellungen\e.burger\Eigene Dateien\Auftragsplanung"
Workbooks.Open Filename:= _
"C:\Dokumente und Einstellungen\e.burger\Eigene Dateien\Auftragsplanung\Archiv.xls"
Windows("Archiv.xls").Activate
a = ActiveWorkbook.Sheets.Count
Windows("Auftragsplanung.xls").Activate
Sheets(tmp).Move After:=Workbooks("Archiv.xls").Sheets(a)  


Der teil wos ausbeisst:
tmp ist Blattname der zu verschiebenden Datei
a also Anzahl der Blätter in Mappe Archiv.xls


Sheets(tmp).Move After:=Workbooks("Archiv.xls").Sheets(a)


hier wird dann Laufzeitfehler 9 gemeldet
in tmp und a stehen auf jeden fall in der zeile die richtigen werte...

Anzeige
AW: Tabellenblatt in andere Mappe
09.07.2009 10:22:22
Bowl
Problem gelöst:
Statt namen Blattindex zu weisen:
x = Activesheet.index
'Dann Sprung in anderes Fenster; code lass ich mal weg
a = activeworkbook.Sheets.Count
'sprung zurück;
Sheets(x).Move After:=Workbooks("Archiv.xls").Sheets(a)
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige