Einführung "VBA mit Microsoft Office"

Code Snippet "VBA Excel"

Zellen und Zellbereiche in Excel auswählen oder bearbeiten

Zusammenstellung der verschiedenen Möglichkeiten, auf Zellen oder Zellbereiche zuzugreifen (inkl. Schleifen, Range speichern, rel. und abs. Bezüge)

Sub Zellen_verarbeiten()
  Dim objCell
  Dim objrange As Range
  Dim objsheet As Worksheet
  Dim objworkbook As Workbook
  
  Set objworkbook = Application.Workbooks("dateiname.xls")
  Set objsheet = objworkbook.Sheets("blattname")
  
  'Wert in Zelle mit bestimmtem Bezug setzen
  objsheet.Range("A1").Value = 1
  objsheet.Cells(1, 2).Value = 2


  '***********************************
  'Bereiche verarbeiten
  
  'Via Bereichsbezüge angegebenen Bereich mit Formel füllen
  Set objrange = objsheet.Range("C1:D1")
  objrange.Formula = "=RAND()"


  'Einen Bereich mit Range und Cells füllen
  'Unbedingt objsheet.Cells.., sonst funktioniert es nur auf aktiviertem Blatt!
  objsheet.Range(objsheet.Cells(2, 1), objsheet.Cells(4, 4)).Value = "Text"
  
  'Schleife in Range
  For Each objCell In objsheet.Range(objsheet.Cells(5, 1), objsheet.Cells(5, 3))
    'Rnd erzeugt Zufallszahl >= 0 und < 1
    objCell.Value = Int((10 * Rnd))
  Next
 
 
  '***********************************
  'Zugriff auf ganz bestimmte Zellen
  
  '1. benannten Bereich auswählen
  objworkbook.Names(1).RefersToRange.Select
    
  'Zeile 1 auswählen
  Range("1:1").Select
  
  'Mehrere Spalten auswählen
  Range("A:A,C:C,F:F").Select
  
  'Von Blattanfang bis zu aktiver Zelle markieren
  Range("A1", ActiveCell).Select
  
  'Block um die angegebene Zelle markieren
  objsheet.Range("A1").CurrentRegion.Select
  
  'Um eine Zeile nach unten verschieben
  objsheet.Range("A1").Offset(1, 0).Select
  
  'auf letzte ausgefüllte Zelle in der aktiven Zeile springen
  Cells(ActiveCell.Row, 256).End(xlToLeft).Select

  'Den ganzen benutzen Berech markieren
  ActiveSheet.UsedRange.Select
  
  'Zellen in Range speichern
  Dim objGefundeneZellen As Range
  Set objGefundeneZellen = Union(objsheet.Range("A1"), objsheet.Range("A3"))
  objGefundeneZellen.Select

  'letzte bearbeitete Zelle anspringen
  objsheet.Cells.SpecialCells(xlCellTypeLastCell).Select
  
End Sub