AW: Geht doch nicht :-((((
22.06.2017 19:18:37
STeve
Hi Mullit......... Super dass du da mal reinschaust.
Option Explicit ganz oben - habe ich rausgenommen weil der dann stehen bleibt bei:
For Each wks In Worksheets - weil er wks nicht kennt? - Public wks As Range --- geht mal nicht!!
LG STeve
Hier der Code:
Public multibereich1_neu As Range
Public multibereich2_neu As Range
Public Rechenzeile_neu As Range
Public JD_Zeile_neu As Range
Public Sub ZeilenermittelnundinUnionzusammenfassen_neu()
Dim intAuszaehlung As Integer
intAuszaehlung = Sheets("Mitarbeiterverwaltung").Cells(Rows.Count, 1).End(xlUp).Offset(, 1). _
Value 'zählt die Anz.d.Bea. aus
Dim denletztenBeamtenNamen As Integer
denletztenBeamtenNamen = Sheets("Zeilenpositionen").Cells(intAuszaehlung, 3).Offset(, -1). _
Value 'zählt die Zeilenpos.d.letzt. Bea. aus
For Each wks In Worksheets
If Left(wks.Name, 9) = "DPL PI BH" Then
For intAuszaehlung = 21 To denletztenBeamtenNamen Step 8
Cells(intAuszaehlung, 1).Offset(-3, 2).Resize(, 32).Select ' dann _
werden offset die PlandienstStartzeilen selektiert
With Selection ' es _
wird ein indiv. BereichName vergeben
.Name = "PlanStartZeile_von_" & Cells(intAuszaehlung, 1)
End With
Next intAuszaehlung
For intAuszaehlung = 21 To denletztenBeamtenNamen Step 8
Cells(intAuszaehlung, 1).Offset(-1, 2).Resize(, 32).Select ' dann _
werden offset die PlandienstEndezeilen selektiert
With Selection ' es _
wird ein indiv. BereichName vergeben
.Name = "PlanEndeZeile_von_" & Cells(intAuszaehlung, 1)
End With
Next intAuszaehlung
For intAuszaehlung = 21 To denletztenBeamtenNamen Step 8
Cells(intAuszaehlung, 1).Offset(4, 2).Resize(, 32).Select ' dann _
werden offset die Rechenzeilen selektiert
With Selection ' es _
wird ein indiv. BereichName vergeben
.Name = "Rechenzeile_von_" & Cells(intAuszaehlung, 1)
End With
Next intAuszaehlung
For intAuszaehlung = 21 To denletztenBeamtenNamen Step 8
Cells(intAuszaehlung, 1).Offset(-2, 2).Resize(, 32).Select ' dann _
werden offset die JD_Zeile selektiert
With Selection ' es _
wird ein indiv. BereichName vergeben
.Name = "JD_Zeile_von_" & Cells(intAuszaehlung, 1)
End With
Next intAuszaehlung
Dim namName As Name
' Schleife über alle definierten Namen der aktiven Mappe
For Each namName In ActiveWorkbook.Names
' wenn der Bezug den Namen des aktiven Tabellenblattes enthält
If InStr(namName.RefersTo, ActiveSheet.Name) > 0 And Left(namName.Name, 14) = " _
PlanStartZeile" Then
' Variable ist noch leer
If multibereich1_neu Is Nothing Then
' der Variablen den Bezugsbereich des laufenden Namen zuweisen
Set multibereich1_neu = namName.RefersToRange
' Variable ist schon gefüllt
Else
' die Variable um den Bezugsbereich des laufenden Namen erweitern
Set multibereich1_neu = Union(multibereich1_neu, namName.RefersToRange)
End If
End If
' wenn der Bezug den Namen des aktiven Tabellenblattes enthält
If InStr(namName.RefersTo, ActiveSheet.Name) > 0 And Left(namName.Name, 13) = " _
PlanEndeZeile" Then
' Variable ist noch leer
If multibereich2_neu Is Nothing Then
' der Variablen den Bezugsbereich des laufenden Namen zuweisen
Set multibereich2_neu = namName.RefersToRange
' Variable ist schon gefüllt
Else
' die Variable um den Bezugsbereich des laufenden Namen erweitern
Set multibereich2_neu = Union(multibereich2_neu, namName.RefersToRange)
End If
End If
' wenn der Bezug den Namen des aktiven Tabellenblattes enthält
If InStr(namName.RefersTo, ActiveSheet.Name) > 0 And Left(namName.Name, 11) = " _
Rechenzeile" Then
' Variable ist noch leer
If Rechenzeile_neu Is Nothing Then
' der Variablen den Bezugsbereich des laufenden Namen zuweisen
Set Rechenzeile_neu = namName.RefersToRange
' Variable ist schon gefüllt
Else
' die Variable um den Bezugsbereich des laufenden Namen erweitern
Set Rechenzeile_neu = Union(Rechenzeile_neu, namName.RefersToRange)
End If
End If
' wenn der Bezug den Namen des aktiven Tabellenblattes enthält
If InStr(namName.RefersTo, ActiveSheet.Name) > 0 And Left(namName.Name, 8) = "JD_Zeile" _
Then
' Variable ist noch leer
If JD_Zeile_neu Is Nothing Then
' der Variablen den Bezugsbereich des laufenden Namen zuweisen
Set JD_Zeile_neu = namName.RefersToRange
' Variable ist schon gefüllt
Else
' die Variable um den Bezugsbereich des laufenden Namen erweitern
Set JD_Zeile_neu = Union(JD_Zeile_neu, namName.RefersToRange)
End If
End If
Next namName
End If
Next wks
End Sub