アプリ版:「スタンプのみでお礼する」機能のリリースについて

このようなマクロを作りました。
------------------------------------------------
Dim i As Integer, r As Range
With Worksheets("リスト")
.Hyperlinks.Delete
.Range("B4:B65536").ClearContents
For i = 2 To Worksheets.Count
Set r = .Cells(i + 2, 2)
r.Value = Worksheets(i).Name
.Hyperlinks.Add Anchor:=r, Address:="", _
SubAddress:=Worksheets(i).Name & "!A1"
Next i
End With
------------------------------------------------
これだけでは、B列に並んでしまうだけなのでこれを20データごと次の列に入力できるようにしたいのですがいろいろ調べたのですがわかりませんでした。

わかる方がいましたらよろしくお願いします。

A 回答 (2件)

こんにちは。

maruru01です。

Set r = .Cells(i + 2, 2)



Set r = .Cells(((i - 2) Mod 20) + 4, 2 + Int((i - 2)/20))

かな。
    • good
    • 0

既回答の(1)MODを使う、ほかに(2)行を変数に持って、管理する方法があり、泥臭くやって見ました。


テストのため、5行おきに並べるConst gyou = 5
にしてますが、10行並びなら=10にします。
Sub test01()
Dim i As Integer, r As Range
Const gyou = 5 '***
With Worksheets("リスト")
.Hyperlinks.Delete
.Range("B4:B65536").ClearContents
j = 4: k = 2 '***
For i = 2 To Worksheets.Count
Set r = .Cells(j, k)
r.Value = Worksheets(i).Name
.Hyperlinks.Add Anchor:=r, Address:="", _
SubAddress:=Worksheets(i).Name & "!A1"
If j = 4 + gyou - 1 Then '***
k = k + 1 '***
j = 4 '***
Else '***
j = j + 1 '***
End If '***
Next i
End With
End Sub
***の行を追加
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!