Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Makro bockt

Forumthread: Makro bockt

Makro bockt
09.05.2006 19:30:20
udo
Der u. a. Code öffnet mir die Datei 28.xls und kopiert mir die Spalte 62 von einem anderen Datenblatt dort in die nächst freie. Soweit so gut. Wenn der das gemacht hat, soll die Spalte 62 in meinem Datenblatt, hier Datenblatt24.csv, gelöscht werden.
Deswegen hab ich die folgenden Befehle hinzugefügt.
Columns("bj:bj").Select
Selection.Delete
Vermutlich ist die Position der Befehle falsch ? Weil nach ausführen des Makros ist die Spalte 62 immer noch da. Was hab ich da falsch gemacht ?
Vielen Dank für Hilfe

Sub Spalte_kopieren_db24()
Dim objWB As Workbook
Dim strFile As String
strFile = "L:\Daten\28.xls"
On Error Resume Next
Set objWB = Workbooks("28.xls")
If objWB Is Nothing Then
Set objWB = Workbooks.Open(strFile)
End If
Err.Clear
On Error GoTo 0
Workbooks("db24.csv").Sheets(1).Cells(1, 62).EntireColumn.Copy
With objWB.Sheets(1)
If .Range("A1") = "" Then
.Range("A1").PasteSpecial Paste:=xlPasteAll
Else
.Range("IV1").End(xlToLeft).Offset(0, 1).EntireColumn.PasteSpecial Paste:=xlPasteAll
Columns("bj:bj").Select ' von Udo eingefügt
Selection.Delete         ' von Udo eingefügt
End If
End With
End Sub

Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makro bockt
09.05.2006 19:58:33
Erich
Hallo Udo,
ich vermute, dass die Spalte nicht nur dann gelöscht werden soll, wenn im Zielblatt A1 nicht leer ist. Dann sollte das Delete nicht zwischen Else und End If, sondern hinter dem End If stehen. Select wird dabei nicht gebraucht.
Columns("bj:bj") bezeichnet die Spalte BJ im (zufällig) gerade aktiven Tabellenblatt. Dort willst du aber gar nicht löschen, sondern im Quellblatt. Da das Quellblatt zweimal gebraucht wird (für Copy und Delete), habe ich dafür ein Worksheet-Objekt deklariert.
So sollte es funzen:
Sub Spalte_kopieren_db24()
Dim objWB As Workbook, wsQuelle As Worksheet
Dim strFile As String
strFile = "L:\Daten\28.xls"
Set wsQuelle = Workbooks("db24.csv").Sheets(1)
On Error Resume Next
Set objWB = Workbooks("28.xls")
If objWB Is Nothing Then
Set objWB = Workbooks.Open(strFile)
End If
Err.Clear
On Error GoTo 0
wsQuelle.Cells(1, 62).EntireColumn.Copy
With objWB.Sheets(1)
If .Range("A1") = "" Then
.Range("A1").PasteSpecial Paste:=xlPasteAll
Else
.Range("IV1").End(xlToLeft).Offset(0, 1).EntireColumn.PasteSpecial Paste:=xlPasteAll
End If
End With
wsQuelle.Columns("bj:bj").Delete   ' von Udo eingefügt
End Sub
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
AW: Makro bockt
09.05.2006 20:06:46
Franz
Hallo Udo,
mit folgender Anpassung sollte es funktionieren

Sub Spalte_kopieren_db24()
Dim objWB As Workbook
Dim strFile As String
strFile = "L:\Daten\28.xls"
On Error Resume Next
Set objWB = Workbooks("28.xls")
If objWB Is Nothing Then
Set objWB = Workbooks.Open(strFile)
End If
Err.Clear
On Error GoTo 0
Workbooks("db24.csv").Sheets(1).Cells(1, 62).EntireColumn.Copy
With objWB.Sheets(1)
If .Range("A1") = "" Then
.Range("A1").PasteSpecial Paste:=xlPasteAll
Else
.Range("IV1").End(xlToLeft).Offset(0, 1).EntireColumn.PasteSpecial Paste:=xlPasteAll
Workbooks("db24.csv").Sheets(1).Columns("BJ").Delete 'geändert Franz
End If
End With
End Sub

Statt "BJ" kannst du in der geänderten Zeile auch 62 verwenden.
Gruß
Franz
Anzeige
AW: Makro bockt
09.05.2006 20:19:47
udo
Hallo Erich, hallo Franz !
vielen Dank Euch beiden. Ich hab den Code genommen , wo db24 nur zweimal auftaucht, weil ich bis 33 die Datenblätter immer von Hand ändern muss. Jedenfalls funktioniert jetzt alles.
Ich find das total deprimierend, krieg ich noch nicht mal alleine hin, daß der mir eine Spalte löscht. Traurig, traurig.
Vielleicht sollte ich auf meine alten Tage doch mal ne Ausbilung zum MTA machen :-)
LG Udo
Anzeige
Keine Frage mehr, dann wohl
10.05.2006 08:02:20
Geschlossen
.
;

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