AW: Zellbereiche makieren
30.10.2006 20:46:41
fcs
Hallo floh,
ich hab die Sache ein klein wenig vereinfacht. Das Makro markiert in Spalte D wenn in einer Kopfzeile mit Eintrag 1 in Spalte B eine Zelle in Spalte E, F, G oder H markiert ist. Abhängig von der Spalte E, F, G oder H werden in D unterschiedlich viele Zeilen markiert.
Gruss
Franz
Sub SpalteDmarkieren()
Dim Zelle As Range
Set Zelle = ActiveCell
Select Case Zelle.Column
Case 5
'In Spalte D werden Zellen bis zum Ende des nächsten Berechnungs-Blockes markiert
If Zelle.Offset(0, -3).Value = 1 Then Call Markieren(1, Zelle.Row)
Case 6
'In Spalte D werden Zellen bis zum Ende der nächsten beiden Berechnungs-Blöcke markiert
If Zelle.Offset(0, -4).Value = 1 Then Call Markieren(2, Zelle.Row)
Case 7
'In Spalte D werden Zellen bis zum Ende der nächsten 3 Berechnungs-Blöcke markiert
If Zelle.Offset(0, -5).Value = 1 Then Call Markieren(3, Zelle.Row)
Case 8
'In Spalte D werden Zellen bis zum Ende des letzten Berechnungs-Blockes markiert
If Zelle.Offset(0, -6).Value = 1 Then Call Markieren(4, Zelle.Row)
Case Else
'do nothing
End Select
End Sub
Private Sub Markieren(Block As Integer, Zeile1 As Long)
Dim Einser As Integer, Zeile2 As Long, wks As Worksheet
Set wks = ActiveSheet
Zeile2 = Zeile1
With wks
'Zeilen hochzählen bis die Zahl der Einser der Anzahl der zu markierenden Berechnungsblöcke entspricht
Do Until Einser = Block And Block <> 4
Zeile2 = Zeile2 + 1
If .Cells(Zeile2 + 1, 2) = 1 Then Einser = Einser + 1
If IsEmpty(.Cells(Zeile2 + 1, 4)) Then Exit Do 'Liste ist zu Ende
Loop
.Range(.Cells(Zeile1, 4), .Cells(Zeile2, 4)).Select
If MsgBox("Formeln im selektierten Bereich in Werte verwandeln?", vbYesNo + vbQuestion) = vbYes Then
Selection.Value = Selection.Value
End If
End With
End Sub