我正在尝试创建一个函数,该函数返回一个范围,该范围包含作为参数传递给它的范围的每个第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错误。我做错了什么
答案 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