[英]Defined Range Not producing a Value for VBA
這里可能有一個簡單的修復,但我定義的范圍沒有被拾取。
我有一組不斷更新的數據。 當我運行宏時,我想為表的最后 5 行中的值設置一個范圍,以檢查Count If
function 的贏/輸(在 H 列中)。 但是,當我運行 VBA 故障排除命令時,從未設置范圍值,並且我的公式因運行時錯誤 1004 而失敗。我嘗試使用Selection.Offset
和ActiveCell.Offset
。
我覺得我犯了一個基本錯誤,但可以縮小范圍或在這里輕松找到示例進行復制
Dim fivegame As Range
Range("H1").Select
Selection.End(xlDown).Select
Set fivegame = Range(Selection.Offset(-4, 0), Selection)
你從哪里得到錯誤? 這行得通嗎?
Dim fivegame As Range
Set fivegame = Range("H" & Rows.Count).End(xlUp).Offset(-4).Resize(5)
refLastCellsInColumn
將返回對由列中最后一個單元格組成的范圍的引用,即由提供給NumberOfCells
參數的參數(數字)定義的最后一個非空單元格(包括)上方的連續單元格的數量。 如果無法創建引用,function 將返回Nothing
(例如,范圍應該從第一個單元格上方的單元格開始......)。編碼
Option Explicit
Sub HowToUseItInYourProcedure()
Dim fivegame As Range
Set fivegame = refLastCellsInColumn(Range("H1"), 5)
End Sub
Function refLastCellsInColumn( _
ByVal FirstCell As Range, _
Optional ByVal NumberOfCells As Long = 1, _
Optional ByVal allowLessCells As Boolean = False) _
As Range
If Not FirstCell Is Nothing And NumberOfCells > 0 Then
With FirstCell
Dim rg As Range
Set rg = .Resize(.Worksheet.Rows.Count - .Row + 1) _
.Find("*", , xlFormulas, , , xlPrevious)
If Not rg Is Nothing Then
If rg.Row - .Row >= NumberOfCells - 1 Then
Set refLastCellsInColumn = _
rg.Offset(1 - NumberOfCells).Resize(NumberOfCells)
Else
If allowLessCells Then
Set refLastCellsInColumn = .Resize(rg.Row - .Row + 1)
End If
End If
End If
End With
End If
End Function
Sub refLastCellsInColumnTEST()
Const FirstCellAddress As String = "H1"
Const NumberOfCells As Long = 2000000
' Define First Cell Range.
Dim cel As Range: Set cel = Range("H1")
' Define Last Cells in column.
Dim rg As Range: Set rg = refLastCellsInColumn(cel, NumberOfCells, True)
' Test.
If Not rg Is Nothing Then
Debug.Print rg.Address
Else
Debug.Print "Nope"
End If
End Sub
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.