web-dev-qa-db-de.com

Excel VBA - Wählen Sie einen dynamischen Zellbereich aus

Ich möchte in der Lage sein, dynamisch einen Zellbereich auszuwählen (die Kopfzeile), wobei die Zeile 1 ist, die Spalten jedoch für die letzte Spalte stehen, wobei "A" die erste Spalte ist und "M" die letzte ist Säule. Ich weiß, wie ich die letzte Spalte finden kann, aber ich weiß nicht, wie ich den unteren Bereich so ändern muss, dass die erste und letzte Spalte als "A" und "M" eingegeben werden.

 Range("A1:M1").Select
8
HL8

Wenn Sie einen variablen Bereich auswählen möchten, der alle Kopfzellen enthält:

Dim sht as WorkSheet
Set sht = This Workbook.Sheets("Data")

'Range(Cells(1,1),Cells(1,Columns.Count).End(xlToLeft)).Select '<<< NOT ROBUST

sht.Range(sht.Cells(1,1),sht.Cells(1,Columns.Count).End(xlToLeft)).Select

... solange es keinen anderen Inhalt in dieser Zeile gibt.

BEARBEITEN: Überarbeitet, um hervorzuheben, dass bei der Verwendung von Range(Cells(...), Cells(...)) die Verwendung von Range und Cells mit einer Arbeitsblattreferenz empfohlen wird.

16
Tim Williams
sub selectVar ()
    dim x,y as integer
    let srange = "A" & x & ":" & "m" & y
    range(srange).select
end sub

Ich denke, das ist der einfachste Weg.

6
akbar moradi

Es hängt also davon ab, wie Sie den Inkrementierer auswählen möchten. Dies sollte jedoch funktionieren:

Range("A1:" & Cells(1, i).Address).Select

Dabei ist i die Variable, die die Spalte darstellt, die Sie auswählen möchten (1 = A, 2 = B usw.). Möchten Sie dies stattdessen durch Spaltenbuchstaben tun? Wenn ja, können wir uns anpassen :)

Wenn Sie möchten, dass auch der Anfang dynamisch ist, können Sie Folgendes versuchen:

Sub SelectCols()

    Dim Col1 As Integer
    Dim Col2 As Integer

    Col1 = 2
    Col2 = 4

    Range(Cells(1, Col1), Cells(1, Col2)).Select

End Sub
4
RocketDonkey

Ich verwende diese Methode am liebsten, sie wählt automatisch die erste bis zur letzten Spalte aus. Wenn jedoch die letzte Zelle in der ersten Zeile oder die letzte Zelle in der ersten Spalte leer ist, wird dieser Code nicht ordnungsgemäß berechnet. Überprüfen Sie die Option link für andere Methoden, um den Zellbereich dynamisch auszuwählen.

Sub DynamicRange()
'Best used when first column has value on last row and first row has a value in the last column

Dim sht As Worksheet
Dim LastRow As Long
Dim LastColumn As Long
Dim StartCell As Range

Set sht = Worksheets("Sheet1")
Set StartCell = Range("A1")

'Find Last Row and Column
  LastRow = sht.Cells(sht.Rows.Count, StartCell.Column).End(xlUp).Row
  LastColumn = sht.Cells(StartCell.Row, sht.Columns.Count).End(xlToLeft).Column

'Select Range
  sht.Range(StartCell, sht.Cells(LastRow, LastColumn)).Select

End Sub
0
aaa