2017-05-10 30 views
0

我想寫一個VBA的偏移函數的變體,當單元格偏移時按照通常落在指定範圍之外的量,取而代之的是將超出範圍&的單元的數量再次從範圍的開始「圍繞」它們。創建「.Offset函數的更改版本」(或「如果使用VBA編寫,將使用何種.Offset函數?」)

我已經在網上搜索過一些人,他寫了一個例子,說明如果用VBA代碼編寫.Offset函數的樣子,但沒有人做到這一點。

是否有人會介意在VBA代碼中.Offset函數看起來像什麼?

順便說一下,變化的我將作出將是這樣的類型:

Public Function MobOffset(off As Integer, REGCOL As Integer) 


'The code below is to be used with Range(Cells.Rows(18), Cells.Rows(29)) 

Rem insert .offset code here: 

If off > 29 Then 
res = off - 29 
off = res - 1 + 18 
End If 

If off < 18 Then 
res = 18 Mod off 
res2 = res - 1 
off = 29 - res2 
End If 


End Function 
+0

所以你想'rng.Offset(off,0)'? –

+0

我只是真的把rng部分放在那裏作爲我將要使用的範圍的指南。本質上,我將放入一個cell.offsets的設置關係,它可以圍繞範圍(cells.rows(18),cells.rows(29))旋轉「Möbius條紋樣式」。 – DK92

+0

這是什麼REGCOL?如果你能提供一個你想要的行爲的具體例子,這將有所幫助。 –

回答

0

通用公式是

count = upper - lower + 1 

index = (index - lower) % count + lower 

所以器(Mod需要調整爲負數):

off = (off - 18) Mod 12 + 18 

If off < 18 Then off = off + 12