AW: Genial
18.08.2006 20:33:54
Heide_Tr
hallo Karel,
na, das ist kein Problem:
Sub Bearbeiten()
Dim i As Integer
Sheets("Orginal").Copy 'neue Datei erzeugen
'ersteinmal EU, letzte EU-Zeile ermitteln
For i = 29 To Range("A65536").End(xlUp).Row
If Range("Z" & i) > 25 Then Exit For
Next i
Call Summenbildung(i)
Call Rahmen(i)
i = i + 1
'Die Überschrift für Drittland
Rows(i).Insert Shift:=xlDown
Rows(i).Font.Bold = True
Range("B" & i) = "Drittlandware"
Range("B" & i).Font.Size = 10
Call Rahmen(i)
'Die Gruppen der restl.Länder
i = i + 2
While Range("Z" & i) > 25
'Gruppenwechsel suchen
If Range("Z" & i) <> Range("Z" & i - 1) Then
Call Summenbildung(i)
Call Rahmen(i)
i = i + 1 'wegen eingefügter Summenzeile
End If
i = i + 1
Wend
End Sub
Sub Summenbildung(bis As Integer)
'Zeile einfügen, Schrift fett
Rows(bis).Insert Shift:=xlDown
Rows(bis).Font.Bold = True
'Zeilennummer der ersten Zelle für die Summierung ermitteln
x = Range("Z" & bis - 1).CurrentRegion.Address
von = Mid(Right(x, Len(x) - 3), 1, InStr(Right(x, Len(x) - 3), ":") - 1)
'alle betroffenen Spalten mit Summenformel bestücken
For Each Spalte In Array("J", "N", "P", "T")
Range(Spalte & bis) = _
Application.WorksheetFunction.Sum(Range(Spalte & von & ":" & Spalte & bis - 1))
Next
'alle betroffenen Spalten: Gesamtsumme erweitern
Set gzelle = Columns("C:C").Find(What:="gesamt", LookIn:=xlValues, LookAt:=xlWhole, _
SearchDirection:=xlNext, MatchCase:=False)
For Each Spalte In Array("J", "N", "P", "T")
Range(Spalte & gzelle.Row) = Range(Spalte & gzelle.Row) + Range(Spalte & bis)
Next
Set gzelle = Nothing
End Sub
Sub Rahmen(i As Integer)
'Rahmen für betroffene Zeile setzen: innen nix, außen dünn
Range("A" & i & ":V" & i).Borders(xlInsideVertical).LineStyle = xlNone
For Each Wert In Array(xlEdgeLeft, xlEdgeTop, xlEdgeBottom, xlEdgeRight)
With Range("A" & i & ":V" & i).Borders(Wert)
.LineStyle = xlContinuous
.Weight = xlThin
End With
Next Wert
End Sub
viele Grüße. Heide