• ベストアンサー

数行ごとの折り返しについて

このようなマクロを作りました。 ------------------------------------------------ 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データごと次の列に入力できるようにしたいのですがいろいろ調べたのですがわかりませんでした。 わかる方がいましたらよろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.1

こんにちは。maruru01です。 Set r = .Cells(i + 2, 2) ↓ Set r = .Cells(((i - 2) Mod 20) + 4, 2 + Int((i - 2)/20)) かな。

その他の回答 (1)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

既回答の(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 ***の行を追加

関連するQ&A