Range Befehl in anderes Tabellenblatt übernehmen?
Hallo zusammen,
Weiß jemand weshalb ich den Range(cells(x,y),cells(x,y)) Befehl nicht in ein anderes Tabellenblatt übertragen kann?
Im ersten Tabellenblatt führe ich ein Makro aus welches auch mit dem Range(cell...) Befehl arbeitet, den gleichen Code möchte ich jetzt auf 2 weitere Tabellenblätter übertragen. Das funktioniert soweit, nur bei dem Range Befehl kommt die Laufzeitfehlermeldung.
Danke im Voraus!
Sub NeueZeile(ByVal Beginn As Integer, ByVal Schicht As Integer)
Dim z As Long
Dim s As Long
z = Beginn
s = 1
Application.Calculation = xlCalculationManual
Application.ScreenUpdating = False
Worksheets("FachlicheKompetenz").Activate
Do Until ActiveSheet.Cells(z, 1).Value = ""
z = z + 1
Loop
ActiveSheet.Rows(z).Insert
ActiveSheet.Cells(z, 1).Value = "S" & Schicht
ActiveSheet.Cells(z, 1).Value = "S" & Schicht
ActiveSheet.Cells(z, 2).Formula = "=COUNTIF(A" & Beginn & ":A" & z & ",""S" & Schicht & """)"
Do Until ActiveSheet.Cells(5, s) = ""
s = s + 1
Loop
With ActiveSheet.Range(Cells(z, 1), Cells(z, s - 1)).Borders
.LineStyle = xlContinuous
.Weight = xlThin
End With
s = s + 1
ActiveSheet.Cells(z, s + 0).FormulaR1C1 = "=SUMIF(R5C4:R5C[-1],""Soll"",RC4:RC[-1])"
ActiveSheet.Cells(z, s + 1).FormulaR1C1 = "=SUMIF(R5C4:R5C[-2],""Ist"",RC4:RC[-2])"
ActiveSheet.Cells(z, s + 2).FormulaR1C1 = "=RC[-1]-RC[-2]"
With ActiveSheet.Range(Cells(z, s), Cells(z, s + 2)).Borders
.LineStyle = xlContinuous
.Weight = xlThin
End With
'Bis hierher funktioniert alles
'Ab hier funktioniert es lediglich bis zu der With Range Anweisung. Dann kommt ein Laufzeitfehler
'Methodisch
Worksheets("MethodischeKompetenz").Activate
Do Until ActiveSheet.Cells(z, 1).Value = ""
z = z + 1
Loop
ActiveSheet.Rows(z).Insert
ActiveSheet.Cells(z, 1).Value = "S" & Schicht
ActiveSheet.Cells(z, 1).Value = "S" & Schicht
ActiveSheet.Cells(z, 2).Formula = "=COUNTIF(A" & Beginn & ":A" & z & ",""S" & Schicht & """)"
Do Until ActiveSheet.Cells(5, s) = ""
s = s + 1
Loop
With ActiveSheet.Range(Cells(z, 1), Cells(z, s - 1)).Borders
.LineStyle = xlContinuous
.Weight = xlThin
End With
s = s + 1
ActiveSheet.Cells(z, s + 0).FormulaR1C1 = "=SUMIF(R5C4:R5C[-1],""Soll"",RC4:RC[-1])"
ActiveSheet.Cells(z, s + 1).FormulaR1C1 = "=SUMIF(R5C4:R5C[-2],""Ist"",RC4:RC[-2])"
ActiveSheet.Cells(z, s + 2).FormulaR1C1 = "=RC[-1]-RC[-2]"
ActiveSheet.Range.Range(Cells(z, s), Cells(z, s + 2)).Borders
.LineStyle = xlContinuous
.Weight = xlThin
End With
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
End Sub
Sind x und y in deinem Code Variablen oder Zahlenkonstanten?
Ja ich habe Variablen verbaut
Zeig mal her was du bisher hast. Wenn es dir darum geht Formeln zuzuweisen mit VBA dann melde dich.
Anonsten helfen die Select, Copy und Paste Funktionen.
Ich habe den Code der ursprünglichen Frage angefügt, kann scheinbar bis zu 59min dauern bis die Frage aktualisiert ist...
2 Antworten
Wenn du Variablen verbaut hast, dann prüfe, ob sie zum Zeitpunkt des Aufrufs des Ranges den richtigen Wert haben.
Am besten, du setzt einen Breakpoint.
Gehe auf Nummer sicher und gib das komplette Objekt an ,"wo" du dich befindest:
Worksheets("HierBinIch").Range(Worksheets("HierBinIch").cells(x,y),Worksheets("HierBinIch").cells(x,y))
Damit die Dinge einfacher sind lege ich meist eine Vorlagen Seite an (Ausgeblendet, wo sich die Formeln befinden.
Aus dieser Seite Wird dann per Copy Paste jede Formel auf den gewünschten Seiten platziert und dann per weiteres Copy Paste darauf vervielfältig. Dabei kommen die Standard Mechanismen von Excel ins Spiel, die relative und fixe Formel korrekt weiter-schreiben. (Was auch beim 'Runterziehen' passiert)
Mit drei vier Zeilen Code ist dann alles erledigt.