簡體   English   中英

Excel-VBA:在行中創建命名范圍,直到單元格內容結束

[英]Excel-VBA: create named Range in row until end of cell content

想象一下一個Excel工作表,其中每行都有一些行和一些內容(即,每行的列長不同)。

在Excel-VBA中:如何在X列中創建從行單元格2到此X列內容末尾的Range-X?

即我想為每列創建一個命名范圍,並且每個范圍應從第2行開始,直到每列長度的結尾!

感謝您對此的任何幫助!

當然,您可以使用此代碼段查找列中最后一個填充的單元格,並使用該行號設置您的range.name只需將“ A”替換為所需的任何列即可。

Sub test()
Dim lastrow As Integer
 lastrow = Cells(Rows.Count, "A").End(xlUp).Row
 Range("A2:A" & lastrow).Name = "RangeColA"
End Sub

如果您想對每一列都這樣做,則可以嘗試這樣的操作-

Sub test()
Dim lastrow As Integer
Dim letter As String
Dim lastcol As Integer
lastcol = Cells(1, Columns.Count).End(xlToLeft).Column


For i = 65 To 65 + lastcol
 letter = Chr(i)
 lastrow = Cells(Rows.Count, letter).End(xlUp).Row
 Range(Cells(2, letter), Cells(lastrow, letter)).Name = "RangeCol" & letter
Next

End Sub

這是另一個答案(受Raystafarian的啟發),處理了列中最后使用的單元格出現在第二行或第二行以上的情況,並在名稱中提供了更大的靈活性:

Sub NameColumn(Col As String, Optional ColName As Variant)
    Dim n As Long
    Dim myName As String
    If IsMissing(ColName) Then ColName = "Range_" & Col
    n = Cells(Rows.Count, Col).End(xlUp).Row
    If n <= 2 Then
        Range(Col & "2").Name = ColName
    Else
        Range(Col & "2:" & Col & n).Name = ColName
    End If
End Sub

嘗試在A到E列中進行各種操作(包括保留一個空白列),然后進行如下測試:

Sub test()
    NameColumn "A"
    NameColumn "B"
    NameColumn "C"
    NameColumn "D", "Bob"
    NameColumn "E"
End Sub

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM