Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1224to1228
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

.Cells(Rows.Count, "B").End(xlUp).Row

.Cells(Rows.Count, "B").End(xlUp).Row
SaSchu
Hallo zusammen,
ohne Eure Hilfe komme ich nicht weiter.
Ich habe eine Tabelle aus der Daten in eine andere Datei kopiert werden sollen. Dazu gibt es ein Makro das das Öffnen einer zusätzlichen (Ziel-)Datei bewirkt. Dann wird in dieser Datei eine bestimmte Zeile gesucht und dann 1000 Zeilen gelöscht (nur als Sicherheit, falls die Datei mal aus Versehen überspeichert wurde). Das klappt bis dahin auch alles. Nun soll aber der eigentliche Kopiervorgang passieren. Und zwar in dem ich bestimmte Spalten der Quelldatei in die Zieldatei kopiere.
So soll z. B. B3 bis ENDE (nur benutzte Zeilen) kopiert werden und dann der Inhalt in die Zeile nach der Zeile in der Nr steht eingefügt werden. In diesem Fall (aber eher die Ausnahme) auch in Spalte B.
Vorgestellt hatte ich mir das Ganze so, aber der Kopierteil funktioniert nicht:
Sub kopieren()
Dim oXlSM As Workbook, oXML As Workbook
Const sListZeichen$ = "• "
Dim i, j, k As Long
Dim Lz As Long
Dim vntDatNam As Variant
Application.ScreenUpdating = False
Const sNeuerPfad As String = "\\xxx.xxx.xx.xx\Projekte\"
If ChDirUNC(sNeuerPfad) Then
Do
MsgBox "Bitte öffnen Sie die passende Datei."
vntDatNam = Application.GetOpenFilename("XML-Dateien (*.xml), *.xml")
If vntDatNam = False Then
If MsgBox("Wollen Sie die Anwendung hier abbrechen?", vbYesNo, "Abbruch?") = vbYes  _
Then
MsgBox "Die Ausführung wird auf Ihren Wunsch abgebrochen!", vbCritical, "Abbruch!"
Exit Sub
End If
End If
Loop Until vntDatNam  False
Else
MsgBox "Die Ausführung wird wegen eines Fehlers abgebrochen!", vbCritical, "Fehler!"
End If
Set oXML = Workbooks.Open(Filename:=vntDatNam)
Set oXlSM = ThisWorkbook 'ThisWorkbook = die xlsm-Datei, in der dieser Code steht
With Sheets("neue Zustandsbeschreibungen")
For i = .Cells(65536, 1).End(xlUp).Row To 1 Step -1
If .Cells(i, 1).Text = "Nr" Then j = i
Next i
For k = 1000 To j + 1 Step -1
Rows(k).EntireRow.Delete
Next k
End With
With oXlSM.Sheets("Mängel vor der Abnahme")
Lz = .Cells(Rows.Count, "B").End(xlUp).Row
Range("B3:B" & Lz).Copy oXML.Sheets("neue Zustandsbeschreibungen").Range(k, 2)
End With
Application.ScreenUpdating = True
End Sub

Ich bekomme dann die Fehlermeldung:
Laufzeifehler '1004':
Anwendungs- oder objektdefinierter Fehler
Die Meldung bezieht sich auf diese Zeile:
Range("B3:B" & Lz).Copy oXML.Sheets("neue Zustandsbeschreibungen").Range(k, 2)
Erkennen kann ich nur Lz = 1000 und k = 64. Wobei k eigentlich 65 sein muss, denn in j (Zeile 64 steht Nr.).
Könnt Ihr meinen Fehler entdecken?
Vielen Dank & Gruß
SaSchu
AW: .Cells(Rows.Count, "B").End(xlUp).Row
15.08.2011 11:54:01
Josef

Hallo Sascha,
da fehlt der Punkt.
.Range("B3:B" & Lz).Copy .....


« Gruß Sepp »

AW: .Cells(Rows.Count, "B").End(xlUp).Row
15.08.2011 12:09:53
SaSchu
Hallo Sepp,
danke, habe ihn ergänzt. Blöd von mir!
Leider habe ich nach wie vor die gleiche Fehlermeldung, an der gleichen Stelle. :(
Hast Du noch eine Idee?
Danke & Gruß
SaSchu
Anzeige
AW: .Cells(Rows.Count, "B").End(xlUp).Row
15.08.2011 12:23:40
Josef

Hallo Sascha,
".range(k, 2)" kann nicht funktionieren.
.Range("B3:B" & Lz).Copy oXML.Sheets("neue Zustandsbeschreibungen").Cells(k, 2)

« Gruß Sepp »

AW: .Cells(Rows.Count, "B").End(xlUp).Row
15.08.2011 12:42:50
SaSchu
Hallo Sepp,
das war es. Nur habe ich jetzt ein großes Problem nicht berücksichtigt. Es dürfen nur Werte eingefügt werden. Keine Formatirungen, Formeln etc.
Kannst und magst Du mir dabei auch noch einmal helfen?
Danke & Gruß
SaSchu
Anzeige
....PasteSpecial Paste:=xlValues
15.08.2011 13:16:43
SaSchu
Hallo Sepp,
ich noch einmal.
Habe gehofft das es hiermit klappt:
.Range("B3:B" & Lz).Copy oXML.Sheets("neue Zustandsbeschreibungen").Cells(j + 1, 2).PasteSpecial Paste:=xlValues
Aber auch da gibt es irgendeinen Fehler?!
"Erwartet Anweisungsende".
Wirst Du daraus schlau?
Gruß
SaSchu
AW: ....PasteSpecial Paste:=xlValues
15.08.2011 15:48:42
Josef

Hallo Sascha,
das kann man nicht in eine Zeile schreiben.

.Range("B3:B" & Lz).Copy
oXML.Sheets("neue Zustandsbeschreibungen").Cells(j + 1, 2).PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False


« Gruß Sepp »

Anzeige
AW: ....PasteSpecial Paste:=xlValues
16.08.2011 10:45:09
SaSchu
Hallo Sepp,
PERFEKT!!!
1.000-Dank!!!
Noch eine (vorerst) letzte Frage... ich muss nun einige Spalten hin und her kopieren. Aber nicht immer b nach b, c nach c usw. sondern auch f nach m usw.
Muss ich für jede Spalte diesen Coe komplett nehmen und anpassaen oder kann ich das auch zusammenfassen?
Danke und Gruß
SaSchu
AW: ....PasteSpecial Paste:=xlValues
16.08.2011 19:47:57
Josef

Hallo Sascha,
vom Prinzip her, musst du das für jeden Bereich separat machen, außer das "Application.CutCopyMode = False" brauchst du nur einmal zum Schluss.
Man kann natürlich in einer Schleife die Bereiche abarbeiten, das hängt aber von deinen Anforderungen ab.

« Gruß Sepp »

Anzeige

123 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige