Hallo,
nachfolgend habe ich dir eine Beispiel-VBA-SUB "Diagramm_Daten()" angefügt.
1) In dieser wird im Namensmanager ein benannter Zellbereich namens "Diagramm_Daten" im Bereich $AW$8:$BA$27 des aktiven Arbeitsblattes angelegt.
2) Mit Hilfe dieses benannten Zellbereiches wird eine VBA-Range-Variable "rngDaten" erzeugt und die Anzahlen der enthaltenen Zeilen und Spalten ermittelt.
3) Es wird dann die Zelle unterhalb der rechten unteren Ecke des Zellbereiches inspiziert
4) Ist sie nicht leer, so wird die 1.Zeile (also $AW$8:$BA$8) entfernt und der restliche Zellbereich um 1 Zeile nach oben geschoben
5) Falls Pkt.4) zutraf, hat jetzt sowohl die Bereichsvariable als auch der benannte Zellbereich (im Namensmanager) 1 Zeile weniger, weswegen sowohl die Bereichsvariable auf die ursprüngliche Zeilenanzahl vergrößert wird als auch der Bereichsname des Namensmanagers auf den ursprünglichen Bereich.
6) Zum Schluss wird in einer Messagebox noch ein Größenvergleich durchgeführt, wo man sieht, dass beide (Bereichsvariable und Bereichsname) denselben ursprünglichen Zellbereich darstellen.
7) Der Code soll nur als Vorlage dienen - entnimm davon, was du brauchen kannst, insbesondere Pkt.6) wirst du in deinem Code nicht benötigen.
Code:
Option Explicit
Sub Diagramm_Daten()
Dim Ws As Worksheet, Wb As Workbook
Dim strNameDaten As String, strZellbereich As String
Dim rngDaten As Range
Dim lngZeilen As Long, lngSpalten As Long
'---- Ermittle Arbeitsmappenobjekt und Arbeitsblattobjekt ----
Set Wb = ActiveWorkbook: Set Ws = Wb.ActiveSheet
'---- 1) Erzeuge Bereichsnamen für einen einen benannten Zellbereich ----
'---- Kann auch händisch im Namensmanager angelegt werden. --------------
strNameDaten = "Diagramm_Daten": strZellbereich = "$AW$8:$BA$27"
Wb.Names.Add Name:=strNameDaten, RefersTo:="=" & Ws.Name & "!" & strZellbereich
'---- 2) Erzeuge Bereichsvariable mittels vorgegebenem Bereichsnamen ----
Set rngDaten = Range(Wb.Names(strNameDaten))
'---- Im Bereich der Bereichsvariablen tue Folgendes: ----
With rngDaten
'2) Ermittle Zeilen- und Spaltenanzahl des Bereichs
lngZeilen = .Rows.Count: lngSpalten = .Columns.Count
'3) Wenn die Zelle unterhalb der rechten unteren Ecke des Bereiches nicht leer ist:
If Not IsEmpty(.Cells(lngZeilen + 1, lngSpalten).Value) Then
'4) dann entferne die Zellen der 1.Zeile des Bereiches
'und schiebe den restlichen Bereich um diese 1 Zeile hinauf.
.Rows(1).Delete Shift:=xlUp
'5) Die Bereichsvariable ist jetzt um 1 Zeile kleiner und auch
'der benannte Bereioh ist jetzt um 1 Zeile kleiner!
End If
End With
'5) Vergrößere die Bereichsvariable wieder auf die ursprüngliche (Zeilen)anzahl.
Set rngDaten = rngDaten.Resize(lngZeilen)
'5) Stelle den benannten Zellbereich wieder auf die ursprüngliche (Zeilen)anzahl.
Wb.Names.Add Name:=strNameDaten, RefersTo:="=" & Ws.Name & "!" & strZellbereich
'6) Zeige den Zellbereichsvergleich der Bereichsvariablen und des Bereichsnamens an:
MsgBox Prompt:="DatenVariab: " & rngDaten.Address & vbNewLine & _
"DatenName: " & Range(Wb.Names(strNameDaten)).Address, _
Buttons:=vbInformation, Title:="Bereichsvergleich"
End Sub