Microsoft Excel

Herbers Excel/VBA-Archiv

wie kann man dieses kürzer machen! | Herbers Excel-Forum


Betrifft: wie kann man dieses kürzer machen! von: Swen
Geschrieben am: 14.10.2008 19:04:23

HI @ all,

ich habe mit dem Makro recorder und dem was ich schon kenne mir folgendes zusammen gebastelt!

Dim rngRangeTable As Range

Cells.Find(What:="Ch", After:=ActiveCell, LookIn:=xlValues, LookAt:= _
xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=True _
, SearchFormat:=False).Activate
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlDown)).Select

Set rngRangeTable = Selection

gibt es hier eine bessere kürzere methode?

gruß
swen

  

Betrifft: AW: wie kann man dieses kürzer machen! von: Uduuh
Geschrieben am: 14.10.2008 19:14:47

Hallo,

Cells.Find(What:="Ch", After:=ActiveCell, LookIn:=xlValues, LookAt:= _
xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=True _
, SearchFormat:=False).Activate
Set  rngRangeTable=Range(selection.end(xldown),selection.end(xltoright))



Gruß aus’m Pott
Udo



  

Betrifft: AW: wie kann man dieses kürzer machen! von: Swen
Geschrieben am: 14.10.2008 19:20:56

vielen dank!


  

Betrifft: AW: wie kann man dieses kürzer machen! von: Daniel
Geschrieben am: 14.10.2008 22:16:56

Hi

eine bessere Methode sollte ohne SELECT und ACTIVATE auskommen.
probier mal das hier:


Sub test()
Dim rngRangeTable As Range
With Cells.Find(What:="Ch", After:=ActiveCell, LookIn:=xlValues, LookAt:= _
        xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=True _
        , SearchFormat:=False)
    Set rngRangeTable = Range(.Cells, .CurrentRegion.SpecialCells(xlCellTypeLastCell))
End With
End Sub



Gruß, Daniel


  

Betrifft: das versteh' ich ja kaum ;-) owT von: Rudi Maintaire
Geschrieben am: 14.10.2008 23:04:28




  

Betrifft: Noch ein Detail von: Jürgen V.
Geschrieben am: 15.10.2008 01:16:10

Hallo Daniel, Hallo Swen,

für eine korrekte Lösung wäre es wichtig zu wissen, ob der zu ermittelnde Bereich bis zur rechten unteren Ecke des die Fundstelle umgebenden Bereichs gehen soll oder bis zur letzten Zelle des Tabellenblatts, was das selbe sein kann, aber nicht muss.

Die Lösung mit .SpecialCells(xlCellTypeLastCell) wird den Bereich bis zur letzten genutzten Zelle des Tabellenblatts bestimmen, denn anders als vielleicht zu erwarten wäre, liefert .SpecialCells(xlCellTypeLastCell) auf einen Bereich angewendet nicht dessen letzte Zelle zurück, sondern die letzte Zelle des Tabellenblatts, auf dem der angesprochene Bereich liegt (bzw. das, was Excel für die letzte genutzte Zelle hält).

Wenn es um die letzte Zelle des umgebenden Bereichs geht, könnte die entsprechende Codezeile (ausgehend von Daniels Lösung) so aussehen:

Set rngRangeTable = Range(.Cells, .CurrentRegion.Cells(.CurrentRegion.Cells.count))

Gruß, Jürgen


  

Betrifft: AW: wie kann man dieses kürzer machen! von: Erich G.
Geschrieben am: 15.10.2008 09:27:12

Hallo Swen,
ist eigentlich sicher, dass "Ch" gefunden wird? Wenn nicht, führen einige der Vorschläge zum Fehlerabbruch.

Mal ausgehend davon, dass der Bereich ab der Fundstelle so richtig bestimmt wird:

Sub tst()
   Dim rngRangeTable As Range

   Set rngRangeTable = Cells.Find(What:="Ch", LookIn:=xlValues, _
      LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
      MatchCase:=True, SearchFormat:=False)
   If Not rngRangeTable Is Nothing Then Set rngRangeTable = _
      Range(rngRangeTable.End(xlDown), rngRangeTable.End(xlToRight))
'   rngRangeTable.Select
End Sub

Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort


Beiträge aus den Excel-Beispielen zum Thema "wie kann man dieses kürzer machen!"