Das Clever-Excel-Forum.de - Treffen
... 14.-16. September 2018 im Allgäu ...

Leerbereich zwischen Zellen auswählen
#1
Hallöchen,

ich möchte gerne den Leerbereich (hier zwischen Zeile 9 und Zeile 14 ) auswählen und selektieren. Die aktive Zelle kann sich dabei beliebig irgendwo im Leerbereich befinden .
Wie lautet der entsprechende VBA Code dafür?

?mage
to top
#2
z.B. so:
Code:
ActiveCell.CurrentRegion.SpecialCells(xlCellTypeBlanks).Select
to top
#3
Hallöchen,

leider nicht ganz das was ich suche. Habe vergessen zu erwähnen, dass in der Nachbarspalte(n) auch noch etwas stehen kann.
Bei meinem hier angegeben Beispiel würde


Code:
Range("A:A").SpecialCells(xlCellTypeBlanks).Areas(1).Select

gut funktionieren. Aber das Problem bei oben genanntem Code ist, das der Leerbereich überall in der Spalte stehen kann, dass es beliebig viele Leerbereiche geben kann und
dass ich nicht weiß wie man die Index von Area, im Beispiel hier ja gleich 1, bestimmen kann. Brauch also noch etwas Hilfe von euch.
to top
#4
Code:
Sub M_snb()
  for each it in columns(1).specialcells(4).areas
    msgbox it.address
  next
End Sub
to top
#5
Hallo Snb,

danke schon mal für deinen Code. Den habe ich habe hier mal etwas erweitert und für die Forumsmitglieder auch etwas leichter verständlich geschrieben.
(Objektdeklaration nachgeholt)


Code:
Sub M_snb_Forumfreundlich()
Dim it As Object

'Alle Leerbereiche in Spalte in 1
For Each it In Columns(1).SpecialCells(xlCellTypeBlanks).Areas
Debug.Print it.Address
Debug.Print it.Select
Next

'Alle Bereiche mit Inhalt in Spalte 1
For Each it In Columns(1).SpecialCells(xlCellTypeConstants).Areas
Debug.Print it.Address
Debug.Print it.Select
Next

End Sub
Adressen und Zellbereiche von leeren/nichtleeren Bereichen werden angegeben bzw. markiert. Interessante Erweiterung, beantwortet aber noch nicht meine Frage bzw.
höchstens indirekt, da die Sache über ForEach Schleife abgewickelt wird, müßte dann der entsprechende Bereich ausgerechnet werden. So etwas kann ich natürlich auch
mit End(XluP) und End(XlDown) etc. machen. Was mir vorschwebt ist die elegante Lösung. Am besten ein Einzeller.


Code:
Debug.Print "Areaanzahl mit Inhalt: " & Range("A:A").SpecialCells(xlCellTypeConstants).Areas.Count
Debug.Print "Areanzahl die leer sind: " & Range("A:A").SpecialCells(xlCellTypeBlanks).Areas.Count

Damit läßt sich die Areaanzahl angeben. Es muß duch auch möglich sein, die "Area" in der sich die aktuelle Zelle befindet direkt über einen Befehl auszugeben oder?!
to top
#6
Statt 100% überflüssige Code (die Besucher hier sind kluger als du meinst) hinzufügen wäre es besser deine Frage exakter zu formulieren.
to top
#7
Hallöchen,
ganz einfach: Bei einer gegebenen AktivenZelle in einem leeren Zellbereich in Spalte 1 möchte ich wissen, welcher Index für das Area das ist, denn dann kann ich
mit den schon von mir gemachten Angaben den Leerbereich direkt markieren:


Code:
Range("A:A").SpecialCells(xlCellTypeBlanks).Areas(???).Select
to top
#8
Code:
Sub M_snb()
  for each it in columns(1).specialcells(4).areas
    if not intersect(activecell,it) is nothing then exit for
  next
  it.select
End Sub
[-] Folgende(r) 1 Benutzer sagt Danke an snb für diesen Beitrag:
  • santana
to top
#9
Hallo Snb,

dat is it!! Danke, Super gemacht!!!!

P.S.: Freu dich bzw. freut euch nicht zu früh, habe bestimmt noch Fragen und nerv weiter. Aber für heute schalt ich den Rechner aus.
Euch einen schönen Abend.
to top
#10
Hallo,

geht so etwas nicht auch mit der WorksheetFunction.CountIF ?!
to top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste