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

Codezeile hat einen Fehler beim Kopieren

Codezeile hat einen Fehler beim Kopieren
06.05.2022 11:41:31
Eisi
Hallo zusammen,
ich taste mich Schritt für Schritt durch den neuen Code durch. Hierzu brauche ich bitte Euren Input.
Die folgenden Codezeilen sollten eigentlich die Überschrift einfügen und darunter einen roten Punkt einfügen.
Getrennt geht der Code, aber zusammen wird der rote Punkt eingefügt, aber die Überschrift nicht mehr.
Warum ist das so?
Danke für die Hilfe.
VG Eisi :-)
' Überschrift kopieren
Set raBereich_1 = .Range("F15")
'letzte Zeile in Spalte F finden und eins tiefer gehen
loLetzteZiel_1 = .Cells(Rows.Count, "F").End(xlUp).Offset(1).Row
raBereich_1.Copy
' Überschrift einfügen
.Cells(loLetzteZiel_1, "F").PasteSpecial Paste:=xlPasteValues
'Punkt einfügen
.Cells(loLetzteZiel_1, "J").Offset(2, -4).FormulaR1C1 = "."
'Punkt rot einfärben
.Cells(loLetzteZiel_1, "J").Offset(2, -4).Select
Selection.Font.Color = vbRed

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Codezeile hat einen Fehler beim Kopieren
06.05.2022 12:36:13
Rudi
Hallo,
sieht nach einem Referenzierungsproblem aus.
Worauf bezieht sich
Set raBereich_1 = .Range("F15")
Ist vermutlich leer.
Gruß
Rudi
AW: Codezeile hat einen Fehler beim Kopieren
06.05.2022 12:52:08
Eisi
Hallo Rudi,
in der Zelle steht schon etwas.
In der Zelle steht eine Formel und ist über 4 Zellen gruppiert.
Ich hatte gerade mehrmals den Code mit F5 ausgelöst. Bei der ersten und dritten Aktion erscheint das Name nicht und dann mehrmals hintereinander so wie es sein soll.
Neben der Überschrift rechts lasse ich auch 3 Zahlen nebeneinander einfügen und das geht immer.
So sieht im Moment der komplette Code aus:
' Positionen auflisten
'

Sub Positionen_2_SchichtPlatten()
Dim loLetzteQuelle As Long, loLetzteZiel_1 As Long, loLetzteZiel_2 As Long, loLetzteZiel_BOTTOM As Long
Dim raBereich_1 As Range
Dim raBereich_2 As Range
With Application
.Calculation = xlCalculationManual
.ScreenUpdating = False
.EnableEvents = False
End With
With tbl_Kalkulation
.Unprotect ("20")
' Überschrift kopieren
Set raBereich_1 = .Range("F15")
'letzte Zeile in Spalte F finden und eins tiefer gehen
loLetzteZiel_1 = .Cells(Rows.Count, "F").End(xlUp).Offset(1).Row
raBereich_1.Copy
' Überschrift einfügen
.Cells(loLetzteZiel_1, "F").PasteSpecial Paste:=xlPasteValues
.Cells(loLetzteZiel_1, "J").Offset(2, -4).FormulaR1C1 = "."
.Cells(loLetzteZiel_1, "J").Offset(2, -4).Select
Selection.Font.Color = vbRed
' Filterbereich kopieren
Set raBereich_2 = .Range("F24:F35, G24:H35, P24:P35")
loLetzteQuelle = .Cells(.Rows.Count, "A").End(xlUp).Row
loLetzteZiel_2 = .Cells(Rows.Count, "J").End(xlUp).Offset(1, 5).Row
.Range("A23:P" & loLetzteQuelle).AutoFilter Field:=2, Criteria1:="", Operator:=xlFilterValues
raBereich_2.Copy
' Kopie einfügen
.Cells(loLetzteZiel_2, "J").PasteSpecial Paste:=xlPasteValues
.Range("A23").AutoFilter
'        .Protect ("20")
End With
Application.CutCopyMode = False
Set raBereich_1 = Nothing
Set raBereich_2 = Nothing
With Application
.Calculation = xlCalculationAutomatic
.ScreenUpdating = True
.EnableEvents = True
End With
End Sub

Anzeige
AW: Codezeile hat einen Fehler beim Kopieren
06.05.2022 12:42:13
Yal
Hallo Eisi,
entweder arbeitest Du mit Obejkt-Variablen oder mit Spalten- und Zeilenzahl. Die Vermischung ist irreführend.
Wenn es geht, verwende Variablenamen, die etwas mehr sagen als "raBereich".
Wenn eine Variable nur eine einziges Mal verwendet wird, ist es fraglich, ob man eine Variable braucht.
Wenn man nur Wert überträgt, reicht es, wenn man sagt: Zielzelle übernimmt Wert von Quellzelle.
With in With ist machbar. Es ist eine temportäe Überlagerung. Der Bezug zum ersten With ist sofort nach Abschluss der zweiten wieder verwendbar.
Folgendes Code ist genau dasselbe als dein übergelieferten Code:

'letzte Zeile in Spalte F finden und eins tiefer gehen, gleiche Spalte
Set NeueZelle = .Cells(Rows.Count, "F").End(xlUp).Offset(1,0)
NeueZelle = .Range("F15").Value 'Nur Wert übertragen
With NeueZelle.Offset(2, 0) 'NeueZelle aber 2 Zeilen tiefer. Gleiche Spalte
.FormulaR1C1 = "." 'Punkt einfügen
.Font.Color = vbRed 'Punkt rot einfärben
End With
Aber dein Problem ist irgendwo anders. Ohne genau beschreibung der Fehlermeldung sind wir auch a bissele blank.
VG
Yal
Anzeige
noch eine Frage.. ...... beim Kopieren
06.05.2022 13:15:20
Eisi
Hallo Yal,
es lag wohl an meinem wirren Code, denn mit Deinem Code geht es einwandfrei. Herzlichen Dank.
Zu dieser Stelle: ' Filterbereich kopieren
Set raBereich_2 = .Range("F24:H35, P24:P35") '3 Spalten nebeneinander und letzte Spalte
habe ich noch eine Frage.
Die 4 Werte werden aus F / G / H und P geholt und in den neuen Bereich übertragen.
Ich möchte gerne den Wert aus G 2-Spalten nach rechts einfügen und z. B. die Werte Spalte P 8-Spalten nach rechts einfügen.
Geht das, oder muss ich mir jeden Wert einzeln holen und mit Offset einfügen?
Danke für die Info.
VG Eisi :-)
Anzeige
AW: noch eine Frage.. ...... beim Kopieren
08.05.2022 22:12:35
Yal
Hallo Eisi,
dann geht es nicht "en Block". Da muss man jede Spalte einzeln übertragen.
Beschäftige Dich mit dem Offset. Du scheinst nicht um klaren, was es bewirkt und wie man es einsetzt. Lege den Cursor auf Offset und drücke Strg+F1. Da kommst Du auf die Online-Hilfe von Offset. Grundlich durchlesen ;-)
Die Lösung (ungestestet):

Sub Positionen_2_SchichtPlatten()
Dim NeueZeile As Long
VBARun_optimieren True
With tbl_Kalkulation
.Unprotect ("20")
'letzte Zeile in Spalte F finden und eins tiefer gehen
NeueZeile = .Cells(Rows.Count, "F").End(xlUp).Offset(1, 0).Row
' Überschrift übertragen, Punkt färben
.Cells(NeueZeile, "F") = .Range("F15").Value
.Cells(NeueZeile, "F").Offset(2, 0).FormulaR1C1 = "."
.Cells(NeueZeile, "F").Offset(2, 0).Font.Color = vbRed
'Filtern: nur wo in Spalte B "" steht
.Range(.Range("A23"), .Range("P99999").End(xlUp)).AutoFilter Field:=2, Criteria1:="", Operator:=xlFilterValues
' Daten übertragen
.Cells(NeueZeile, "F") = .Range("F24:F35")
.Cells(NeueZeile, "G").Offset(0, 2) = .Range("G24:G35") 'gleiche Ziel-Zeile (=NeueZeile), Ziel-Spalte 2 Spalten nach rechts
.Cells(NeueZeile, "H") = .Range("H24:H35") 'gleiche Ziel-Zeile, gleiche Ziel-Spalte, entspricht Offset(0, 0). erspart, weil wirkungslos.
.Cells(NeueZeile, "P").Offset(0, 8) = .Range("P24:P35") 'gleiche Zeile, 8 Spalten nach rechts
'Filter zurücksetzen
.Range("A23").AutoFilter
'        .Protect ("20")
End With
Application.CutCopyMode = False
VBARun_optimieren = False
End Sub
Private Sub VBARun_optimieren(Anmachen As Boolean)
Application.Calculation = IIf(Anmachen, xlCalculationManual, xlCalculationAutomatic)
Application.ScreenUpdating = Not Anmachen
Application.EnableEvents = Not Anmachen
End Sub
VG
Yal
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige