Vereinfachen Sie die Benennung eines Bereichs - Excel-Tipps

Jac fragt:

Ich generiere Tabellen, die gleiche Anzahl von Spalten, aber jedes Mal eine andere Anzahl von Zeilen. Ich kann problemlos die letzte Zeile und die letzte Spalte bestimmen, um die Berechnungen durchzuführen, die ich in einem Makro benötige. Der Zweck besteht nun darin, in diesem Makro die Möglichkeit hinzuzufügen, die Tabelle zu benennen (jedes Mal mit demselben Namen), aber im Makro ist der dem Arbeitsblatt zugeordnete Zellbereich R1C1: RxCy, ich weiß nicht, wie der Bereich geschrieben werden soll Verwenden der Werte lastrow und lastcolumn (die die letzte Spalte und Zeile der Tabelle darstellen) mit dem RC-System (ich weiß nicht einmal, ob dies möglich ist).

Die meisten VBA-Programmierer würden die folgende Methode verwenden, die die Names.Add-Methode verwendet.

Sub Method1() LastRow = Cells(65536, 1).end(xlUp).row LastCol = Cells(1, 255).End(xlToLeft).column MyArea = "='" & ActiveSheet.Name & "'!R1C1:R" & LastRow & "C" & LastCol ActiveWorkbook.Names.Add Name:="TheData", RefersToR1C1:=MyArea End Sub

Es gibt eine einfachere Methode zum Zuweisen eines Bereichsnamens. Die folgenden vier Aussagen sind alle gleichwertig. Die letzten beiden sind viel einfacher:

ActiveWorkbook.Names.Add Name:="TheData", RefersToR1C1:="=Sheet1!R1C1:R10C5" ActiveWorkbook.Names.Add Name:="TheData", RefersTo:="=Sheet1!A1:E10" Range("A1:E10").Name = "TheData" Cells(1, 1).Resize(10, 5).Name = "TheData"

Jac - Ich würde die letzte Zeile für die Verwendung anpassen:

Sub Method2() LastRow = Cells(65536, 1).end(xlUp).row LastCol = Cells(1, 255).End(xlToLeft).column Cells(1, 1).Resize(LastRow, LastCol).Name = "TheData" End Sub

Ich habe diese Verknüpfung zum Zuweisen von Bereichsnamen aus der Excel 2002 VBA Programmer's Reference von Bovey & Bullen gelernt. Die 2002-Version dieses Buches kreist um die 2000-Version. Für mein Geld benötigt jeder Excel VBA-Programmierer dieses Buch zu seiner Rechten. Meine Kopie hat Eselsohren und ist nie außer Reichweite.

Interessante Beiträge...