想象一下每行中有一些行和一些內容(即每行不同的列長度)的Excel工作表。Excel-VBA:在行中創建命名範圍,直到單元格內容結束
在Excel-VBA中:如何在列X中創建一個從行 - 單元格2到此X列的內容末尾的範圍-X?
即我想創建一個命名範圍每列,每個範圍應從第2行開始,直到每個列長的結尾!
感謝您的任何幫助!
想象一下每行中有一些行和一些內容(即每行不同的列長度)的Excel工作表。Excel-VBA:在行中創建命名範圍,直到單元格內容結束
在Excel-VBA中:如何在列X中創建一個從行 - 單元格2到此X列的內容末尾的範圍-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
名稱中的減號打敗Excel的解析 –
@JohnColeman你是絕對正確的,我只是改變它以匹配Q格式(沒有想到)。固定。 – Raystafarian
這裏是另一個答案(由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
至E嘗試各種事情在列A(包括留下空白列)然後對其進行測試像這樣:
Sub test()
NameColumn "A"
NameColumn "B"
NameColumn "C"
NameColumn "D", "Bob"
NameColumn "E"
End Sub
你想創建它們設置爲這些範圍VBA範圍變量或做你想做的,在VBA,創建工作簿(或工作表)名稱的範圍是多少?如果後者 - 這種事情很容易做到,儘管你可能遇到一個尷尬的事實,即不是每個列標題都是有效的名稱(如果你試圖使用「C」和「R」,某些奇怪的原因會被拒絕他們的界面,VBA *可能能夠覆蓋這個,儘管如此可能會有細微的副作用) –