簡體   English   中英

Excel:命名范圍為 VBA

[英]Excel: Named range with VBA

我正在嘗試使用 VBA 在 Excel 中定義一個命名范圍。 基本上,我有一個可變的列號。 然后循環運行以確定該特定列中的第一個空單元格。 現在我想定義一個命名范圍,從該特定列的第 2 行到該列中包含數據的最后一個單元格(第一個空單元格 - 1)。

例如,指定了第 5 列,其中包含 3 個值。 如果我是正確的,那么我的范圍將是 (2,5)(4,5)。 我只是想知道如何僅使用整數而不是 (E2:E4) 來指定此范圍。 有可能嗎?

我發現這段代碼定義了一個命名范圍:

'Change the range of cells (A1:B15) to be the range of cells you want to define
    Set Rng1 = Sheets("Sheet1").Range("A1:B15") 
    ActiveWorkbook.Names.Add Name:="MyRange", RefersTo:=Rng1

任何人都可以將我推向正確的方向以僅使用整數指定此范圍嗎?

由於您的目標范圍為 E2:E4,您需要指定單元格位置。 下面的 function 可能對您有用,將列號傳遞給它,例如 5,它將返回地址,因此 5=E 和 27=AA

ColLetter = ColNo2ColRef(colNo)
Set Rng1 = Sheets("Sheet1").Range(ColLetter & "2:" & ColLetter & "4") 
ActiveWorkbook.Names.Add Name:="MyRange", RefersTo:=Rng1

Function ColNo2ColRef(ColNo As Long) As String
    ColNo2ColRef = Split(Cells(1, ColNo).Address, "$")(1)
End Function

希望這可以幫助

編輯:或者:

Set rng = Range(Cells(2, 5), Cells(4, 5)) 'E2:E4
ActiveWorkbook.Names.Add Name:="MyRange", RefersTo:=Rng

或者

Sub test()
Set rng1 = Cells(2, 2) 'B2

Set rng2 = rng1.Resize(3, 1) 'B2:B4
'or
Set rng2 = Range(rng1, Cells(4, 2)) 'B2:B4

End Sub

或者直接做而不循環使用

With Sheet1
    col = 5 'variable col
    Set rng1 = .Range(.Cells(2, col), .Cells(.Rows.Count, col).End(xlUp))
    End With

這與

with sheet1
    Set rng1 = .Range(.Range("E2"), .Range("E" & .Rows.Count).End(xlUp))
    end with

編輯:如果您正在設置命名范圍以動態更改,那么您不需要 VBA。 將此直接輸入到 Excel 中的命名范圍中,並讓它在 E2 和最后一項之間自動調整(假設沒有空格)。 =$E$2:INDEX($E$2:$E$5000,COUNTA($E$2:$E$5000)) (如果需要更多行,請擴展 5000)

暫無
暫無

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

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