ich habe eine Frage (genauer gesagt 2):
wie schaffe ich es, das in nachfolgendem Code nicht nur eine Zeile (die letzte Beschriebene) sondern ein ganzer Block von 6 Zeilen nach oben mitgelöscht werden (also die Eintragungen und Formatierungen natürlich nur)?
Sub letztenZeilenblocklöschen()
On Error GoTo ErrExit
'finde die letzte Eintragung in Spalte A, lösche die Daten (mit einer Zeile geht das, aber nur _
_
wenn durchgehend in A etwas steht, hier z.B.: das "h")
'wie schreiben: finde letzte beschriebene Zelle in Spalte A, lösche ab da einen Block von 6 _
Zeilen nach oben? Bis maximal Block 33:38, dann nicht mehr.
'mit Offset hab ich das versucht aber nicht hinbekommen
ActiveSheet.Cells(Cells(Rows.Count, "A").End(xlUp).Row, 18).EntireRow.Clear
ErrExit:
With Err
If .Number 0 Then MsgBox "Fehler: " & "Keine Zeilen zum löschen vorhanden!", _
vbExclamation, "Achtung:"
End With
End Sub
und die 2.ist es möglich mit dem nachfolgenden Code Personaldaten nicht nur stur in alle Monatsblätter zu übertragen, sondern je nach Monatseintrag in "Übersicht E20"= bspw. "August", dann erst ab Monatsblatt August die Daten einzutragen?
Hab schon versucht, mit Indirect das hinzubekommen - aber hoffnungslos... nicht ich.
Sub Datenübertrag_von_Übersicht_in_alle_Monate()
Dim wksÜ As Worksheet
Dim sheet As Worksheet
Set wksÜ = Worksheets("Übersicht")
If MsgBox(Prompt:="Wollen Sie die eingetragenen Personaldaten in alle Monate des _
Mitarbeiterblattes eintragen?", _
Buttons:=vbYesNo, _
Title:="Alle Personaldaten eingetragen") = vbYes Then
Application.EnableEvents = False
'aktives sheet ist "Übersicht", aus diesem wird der code ausgeführt
'check den monatsnamen der in E20 ("Übersicht") steht,
'schreibe die werte (Bsp.:ÜbersichtE20=August)ab dem monatsblatt August bis letztes monatsblatt _
_
(Dezember)
For Each sheet In ActiveWorkbook.Worksheets
If sheet.Name "Übersicht" And sheet.Name "Fahrzeiten_Januar" And sheet.Name " _
_
Fahrzeiten_Februar" Then
With sheet
.Range("a2") = wksÜ.Range("b4")
.Range("e2") = wksÜ.Range("c4")
.Range("a3") = wksÜ.Range("b2")
.Range("j2") = wksÜ.Range("e7")
.Range("l2") = wksÜ.Range("e9")
.Range("q2") = wksÜ.Range("e12")
.Range("r2") = wksÜ.Range("e13")
.Range("s2") = wksÜ.Range("e14")
.Range("t2") = wksÜ.Range("e15")
.Range("u2") = wksÜ.Range("e16")
.Range("v2") = wksÜ.Range("e17")
.Range("w2") = wksÜ.Range("e18")
End With
End If
Next sheet
For Each sheet In ActiveWorkbook.Worksheets
If sheet.Name "Übersicht" And sheet.Name "Januar" And sheet.Name "Februar" _
Then
With sheet
.Range("c1") = wksÜ.Range("e1")
.Range("c2") = wksÜ.Range("e2")
.Range("c3") = wksÜ.Range("e3")
.Range("c4") = wksÜ.Range("e4")
End With
End If
Next sheet
Else: Exit Sub
End If
If MsgBox(Prompt:="Personaldaten wurden eingetragen!", _
Buttons:=vbOKOnly, _
Title:="Alle Personaldaten wurden eingetragen") = vbOK Then
Application.EnableEvents = True
End If
End Sub
Ich häng noch ne Beispielmappe ran:
https://www.herber.de/bbs/user/88275.xlsm
Danke für jeden Rat und Gruss
Alexander