簡體   English   中英

定義的范圍不產生 VBA 的值

[英]Defined Range Not producing a Value for VBA

這里可能有一個簡單的修復,但我定義的范圍沒有被拾取。

我有一組不斷更新的數據。 當我運行宏時,我想為表的最后 5 行中的值設置一個范圍,以檢查Count If function 的贏/輸(在 H 列中)。 但是,當我運行 VBA 故障排除命令時,從未設置范圍值,並且我的公式因運行時錯誤 1004 而失敗。我嘗試使用Selection.OffsetActiveCell.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)

創建對列中最后一個單元格的引用

  • function 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.

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