Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1612to1616
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

Format mit variabler Zeile kopieren

Format mit variabler Zeile kopieren
13.03.2018 12:14:50
Kai
Hallo zusammen,
ich habe einen Code geschrieben, der mir Daten ans Ende einer Tabelle in einer anderen Datei schreibt. Das Problem liegt darin, daß ich das Format der letzten beschriebenen Zeile kopieren und eine Zeile tiefer einfügen möchte. Ich habe alle Möglichkeiten, die ich gefunden habe, ausprobiert. Teste ich den Code zum Format kopieren in einer separaten Tabelle, funktioniert es. Eingefügt in den bestehenden Code bekomme ich die Meldung "Laufzeitfehler '1004', Die Methode Range für das Objekt'_Worksheet' ist fehlgeschlagen".
Der fehlerhafte Teil ist fett markiert.
Wer kann mir helfen?

Option Explicit
Private Sub CommandSpeichern_Click()
Dim strPN       As String
Dim lngPN       As Long
Dim wksLF       As Worksheet
Dim wksW        As Worksheet
Dim wbkQ        As Workbook
Dim wbkZ        As Workbook
Dim wksZ        As Worksheet
Dim i           As Integer
Dim strWerk     As String
Dim strMat      As String
Dim strName     As String
Application.DisplayAlerts = False
Application.ScreenUpdating = False
'Variablen deklarieren
Set wksLF = Worksheets("Elution_pH_el. LF")
Set wksW = Worksheets("W")
Set wbkQ = ActiveWorkbook
Application.Workbooks.Open "Z:\XXXX\01 Prüfberichte (ausgefüllt)\2012 Projekt Leitfä  _
_
higkeit\0000000 Übersicht Probennahmen Projekt LF.xlsx"
Set wbkZ = ActiveWorkbook
Set wksZ = wbkZ.Worksheets("Übersicht PN LF")
strPN = wksW.Range("B8").Text
strName = strPN & " W pH LF.xlsm"
i = wksZ.Cells(Rows.Count, 1).End(xlUp).Row + 1
strWerk = wksW.Cells(5, 2).Value
strWerk = Mid(strWerk, 7, 3)
strMat = wksW.Cells(5, 2).Value
strMat = Left(strMat, 9)
'Probennummer prüfen
'PN vorhanden?
If IsEmpty(wksW.Range("B8").Value) = True Then
MsgBox "Bitte Probennummer eingeben!"
Exit Sub
End If
'PN im richtigen Bereich?
lngPN = wksW.Range("B8").Value
If lngPN  199999 Then
MsgBox "Bitte Probennummer überprüfen!"
Exit Sub
End If
'Daten übertragen
With wksZ
.Cells(i, 1) = wksW.Cells(7, 2).Value
.Cells(i, 2) = wksW.Cells(8, 2).Value
.Cells(i, 3) = strWerk
.Cells(i, 4) = wksW.Cells(6, 2).Value
.Cells(i, 5) = "PN 8/11, " & strMat
.Cells(i, 9) = wksW.Cells(19, 6).Value
End With
    'Format kopieren
i = i - 1
wksZ.Range(Cells(i, 1), Cells(i, 15)).Copy
i = i + 1
wksZ.Range(Cells(i, 1), Cells(i, 15)).PasteSpecial Paste:=xlFormats
Application.CutCopyMode = False
'Hyperlink einfügen
wksZ.Hyperlinks.Add anchor:=wksZ.Cells(i, 11), Address:="Z:\XXXX\01 Prüfberichte (  _
_
ausgefüllt)\2012 Projekt Leitfähigkeit\Prüfberichte\" & strName, TextToDisplay:=strName
wksLF.Activate
'Datei speichern
wbkQ.SaveAs Filename:="Z:\XXXX\01 Prüfberichte (ausgefüllt)\2012 Projekt Leitfä _
higkeit\Prüfberichte\" & strPN _
& " W pH LF", FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False
Application.DisplayAlerts = True
Application.ScreenUpdating = True
wbkZ.Close True
UserForm02.Show
End Sub

Gruß
Kai

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Format mit variabler Zeile kopieren
13.03.2018 13:00:32
Tino
Hallo,
versuch es mal so, nicht getestet.
Cells(i, 1) liegt wohl wo anders wie wksZ.Range
With wksZ
'Format kopieren
i = i - 1
.Range(.Cells(i, 1), .Cells(i, 15)).Copy
i = i + 1
.Range(.Cells(i, 1), .Cells(i, 15)).PasteSpecial Paste:=xlFormats
Application.CutCopyMode = False
end with
Gruß Tino
AW: Format mit variabler Zeile kopieren
13.03.2018 13:03:31
Werner
Hallo Kai,
deine Referenzierung auf das Blatt passt nicht
hier:
i = wksZ.Cells(Rows.Count, 1).End(xlUp).Row + 1

ändern:
i = wksZ.Cells(wksZ.Rows.Count, 1).End(xlUp).Row + 1

und hier:
'Format kopieren
i = i - 1
wksZ.Range(Cells(i, 1), Cells(i, 15)).Copy
i = i + 1
wksZ.Range(Cells(i, 1), Cells(i, 15)).PasteSpecial Paste:=xlFormats

ändern:
'Format kopieren
wksZ.Range(wksZ.Cells(i -1, 1), wksZ.Cells(i -1, 15)).Copy
wksZ.Range(wksZ.Cells(i, 1), wksZ.Cells(i, 15)).PasteSpecial Paste:=xlFormats
Damit korrekt auf das jeweilige Blatt referenziert wird, muss vor jedem Range-Objekt (Range, Rows, Cells usw.) das jeweilige Blatt angegeben werden.
Gruß Werner
Anzeige
AW: Format mit variabler Zeile kopieren
13.03.2018 13:35:04
Kai
Hallo Tino, hallo Werner,
@Tino: Das hatte ich schon probiert, daran lag es nicht. Trotzdem Danke.
@Werner:
'Format kopieren
wksZ.Range(wksZ.Cells(i -1, 1), wksZ.Cells(i -1, 15)).Copy
wksZ.Range(wksZ.Cells(i, 1), wksZ.Cells(i, 15)).PasteSpecial Paste:=xlFormats
Das ist es. In den Beispielen, die ich gefunden habe, hat die Referenzierung gefehlt, da sie sich auf das gleiche Blatt bezogen haben. Darum hat es beim Test in einer separaten Mappe wohl auch geklappt.
i = wksZ.Cells(wksZ.Rows.Count, 1).End(xlUp).Row + 1
Werde ich auch ändern, allerdings hat mir eine Messagebox nach jeder Änderung von i die korrekte Zeile ausgegeben. Wahrscheinlich mit ein Grund, warum ich den Fehler nicht gefunden habe...
Danke
Kai
Anzeige
Gerne u. Danke für die Rückmeldung. o.w.T.
13.03.2018 14:04:08
Werner
wo ist bei Werner der Unterschied? oT.
13.03.2018 14:57:26
Tino
AW: wo ist bei Werner der Unterschied? oT.
16.03.2018 10:17:15
Kai
Hallo Tino,
sorry für die späte Antwort, ich war gestern ausgelastet.
.Range(.Cells(i, 1), .Cells(i, 15)).Copy
Mir fehlte die Referenzierung vor .Cells, da der Code in einer anderen Mappe Aktionen ausführen soll:
.Range(wksZ.Cells(i, 1), wksZ.Cells(i, 15)).Copy

Gruß
Kai
der Punkt ist doch wksZ oT.
16.03.2018 13:28:16
Tino

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige