Excel 2010 bestimmte Zellen markieren

Hallo,

ich habe eine Spalte mit 2 „Datenblöcken“, also Zellenbereiche die mit Daten gefüllt sind. Getrennt sind diese durch eine Leerzelle.
Nun möchte ich den oberen Datenblock einzeln markieren bzw. den unteren.

Soweit so gut!

Da es aber vorkommen kann das Daten (Zellen) hinzukommen oder wegfallen, kann ich nicht immer den gleichen Bereich markieren.
Wie schreibe ich es in VBA das er in der Spalte B alle Zellen bis zur Leerzelle markiert bzw. alle Zellen die danach kommen?

Hallo Kasamui,

die folgende Lösung funktioniert nicht nur mit zwei, sondern mit beliebig vielen „Datenblöcken“, wie Du sie beschreibst. Die Sub „Markiere“ erledigt die Aufgabe. Sie erhält als Übergabeparameter die Nummer des Datenblocks und die Spaltennummer, auf das sich das Ganze bezieht. Ein Beispiel für den Aufruf steht in der Sub „Test“.

Sub Test()
 Markiere 1, 1
End Sub
Sub Markiere(Nr%, Spalte%)
 Dim max%, i%, zAnf%, zEnd%, gefunden%
 max = UsedRange.Rows.Count
 If Nr = 1 Then zAnf = 1 Else zAnf = 0
 zEnd = 0
 gefunden = 0
 For i = 1 To max + 1
 If Cells(i, Spalte) = "" Then
 gefunden = gefunden + 1
 If (Nr \> 1) And (gefunden = Nr - 1) Then zAnf = i + 1
 If gefunden = Nr Then
 zEnd = i - 1
 Exit For
 End If
 End If
 Next
 If (zAnf \> 0) And (zEnd \> 0) Then
 Range(Cells(zAnf, Spalte), Cells(zEnd, Spalte)).Select
 End If
End Sub

Viele Grüße
Dieter Kern

Excel 2010 Zellen eines Blocks markieren

ich habe eine Spalte mit 2 „Datenblöcken“, also Zellenbereiche
die mit Daten gefüllt sind. Getrennt sind diese durch eine
Leerzelle.
Nun möchte ich den oberen Datenblock einzeln markieren bzw.
den unteren.
Wie schreibe ich es in VBA das er in der Spalte B alle Zellen
bis zur Leerzelle markiert bzw. alle Zellen die danach kommen?

Hallo Kasmui,

meine Codes funktionieren in allen Spalten und auch die Blockanzahl ist egal.
Klicke mit rechts auf eine beliebige Zelle in einem Block,
im Kontextmenu siehst du den neuen Punkt „Block markieren“…

Zur Erzeugung dieses Punktes mußt du die Prozedur
„EinfuegenInKontext“ ausführen lassen.
Willste diesen Auswahlpunkt wieder weg haben so lasse die
Prozedur „LoeschenInKontext“ ausführen.

Gruß
Reinhard

Code gehört in ein Standardmodul, Modul1 o.ä.

Option Explicit

Sub EinfuegenInKontext()
Dim menupoint As CommandBarButton
Set menupoint = Application.CommandBars("Cell").Controls.Add(Type:=msoControlButton, before:=1)
With menupoint
 .Caption = "Block markieren"
 .FaceId = 212
 .OnAction = "Markieren"
End With
End Sub

Sub LoeschenInKontext()
On Error Resume Next
Application.CommandBars("Cell").Controls("Block markieren").Delete
End Sub