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