从每个第n个单元格创建一个范围

时间:2017-10-20 01:28:37

标签: excel vba

我正在尝试创建一个函数,该函数返回一个范围,该范围包含作为参数传递给它的范围的每个第n个单元格。

Function OFFSETRANGE(AREA As Range, Optional STEP As Integer = 1) As Range
Dim Counter As Integer
Dim TempRange As Range

For Each rCell In AREA.Cells
    If Counter Mod Counter = 0 Then
        MsgBox ("In loop" & Counter & " " & rCell)
        TempRange = Application.Union(TempRange, rCell)
    End If
Next
OFFSETRANGE = TempRange
End Function

每当我尝试使用该函数时,都会收到#VALUE错误。我做错了什么

3 个答案:

答案 0 :(得分:2)

Function OFFSETRANGE(AREA As Range, Optional theStep As Integer = 1) As Range

    Dim Counter As Long
    Dim TempRange As Range, rCell As Range

    For Each rCell In AREA.Cells
        Counter = Counter + 1
        If Counter Mod theStep = 0 Then
            Debug.Print "In loop" & Counter & " " & rCell
            'check if we can use Union or not here
            If TempRange Is Nothing Then
                Set TempRange = rCell 
            Else
                Set TempRange = Application.Union(TempRange, rCell)
            End If
        End If
    Next
    Set OFFSETRANGE = TempRange

End Function

答案 1 :(得分:0)

不确定你在这里尝试做什么

If Counter Mod Counter = 0 Then

但是Counter没有值,从而导致值错误。

答案 2 :(得分:0)

有些事情看起来不正确。

1)你的“计数器”整数没有设置,因为你自己做一个mod值,即使它确实有一个值,它也总是等于0。也许你的意思是Counter Mod步骤?在下面的示例中,我设置了counter = 2,但您显然可以更改。

2)工会将首先失败。解决这个问题的最佳方法是使用if语句,如果没有。我在下面提供了一个示例。

wp_enqueue_scripts