[[20210915121323]] 『目次の改行』(素人) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『目次の改行』(素人)

お世話になります。目次の改行をしたいです。
こちらで似たような質問もあったのですが、何をどう組み込んでいいか分かりませんでした。
10行(10列?)ずつになるようにしたいです。

目次は下記のコードを入れています。
他のサイトからコピペさせてもらいました。

 Dim i       As Integer
    Dim iRow    As Integer
    Dim sName   As String

    '目次シートの設定内容をクリア
    Range("A9:BC65535").ClearContents
    Range("A9:BC65535").Hyperlinks.Delete

    '目次開始行数(本例は8行目から目次が作られる)
    iRow = 8
    '目次を作成する列数(本例は3列目(C列)に目次が作られる)
    iColumn = 3

    'ワークシートのサイズ分、下記処理を繰り返す
    For i = 3 To Worksheets.Count Step 1

        '非表示となっているワークシートは目次作成対象外とする
        If Worksheets(i).Visible = xlSheetVisible Then

            'ワークシート名を格納
            sName = "'" & Worksheets(i).Name & "'"
            '目次シートの対象セルにハイパーリンクを設定(目次作成対象ワークシートのA1セルへのリンク)
            Call Hyperlinks.Add(Anchor:=Cells(iRow, iColumn), Address:="", SubAddress:=sName & "!A1", ScreenTip:=Worksheets(i).Name)
            '目次シートの対象セルにシート名を設定
            Cells(iRow, iColumn) = Worksheets(i).Name

           'リンクの文字の大きさ、フォントを設定
            Cells(iRow, iColumn).Font.Size = 13
            Cells(iRow, iColumn).Font.Name = "MS ゴシック"
            Cells(iRow, iColumn).Font.Bold = True

            '次の行へ
            iRow = iRow + 1
        End If
    Next i

End Sub

よろしくお願いします。

< 使用 Excel:unknown、使用 OS:unknown >


どこにどういう順番でハイパーリンクを作成していくかは、
あなたがきちんと提示してください。
二度手間になりますよ?
そのほうがお互いに効率的ですし、
それは質問者さんが考えて示すことではないですか?

また、今のコードではエラーになりますが、参照先はどこですか?
参考までに書いてください。
(γ) 2021/09/15(水) 12:42


すみません。
自分でどうにかできないかいじってたらコードを壊してたようです。
参照先:https://www.casleyconsulting.co.jp/blog/engineer/3888/

    Dim i       As Integer
    Dim iRow    As Integer
    Dim sName   As String

    '目次シートの設定内容をクリア
    Range("A9:BC65535").ClearContents
    Range("A9:BC65535").Hyperlinks.Delete

    '目次開始行数(本例は8行目から目次が作られる)
    iRow = 8
    '目次を作成する列数(本例は3列目(C列)に目次が作られる)
    iColumn = 3

    'ワークシートのサイズ分、下記処理を繰り返す
    For i = 3 To Worksheets.Count Step 1
        '非表示となっているワークシートは目次作成対象外とする
        If Worksheets(i).Visible = xlSheetVisible Then
            'ワークシート名を格納
            sName = "'" & Worksheets(i).Name & "'"
            '目次シートの対象セルにハイパーリンクを設定(目次作成対象ワークシートのA1セルへのリンク)
            Call Hyperlinks.Add(Anchor:=Cells(iRow, iColumn), Address:="", SubAddress:=sName & "!A1", ScreenTip:=Worksheets(i).Name)
            '目次シートの対象セルにシート名を設定
            Cells(iRow, iColumn) = Worksheets(i).Name

           'リンクの文字の大きさ、フォントを設定
            Cells(iRow, iColumn).Font.Size = 13
            Cells(iRow, iColumn).Font.Name = "MS ゴシック"
            Cells(iRow, iColumn).Font.Bold = True

            '次の行へ
            iRow = iRow + 1
        End If
    Next i

End Sub

目次を下記のように作りたいです。(シート名は違います。)

シート3   シート13  シート23
シート4   シート14   ・
シート5   シート15   ・
シート6   シート16   ・
シート7   シート17
シート8   シート18
シート9   シート19
シート10  シート20
シート11  シート21
シート12  シート22

どんなコードをどこに入れてあげればいいか分かりません。
(素人) 2021/09/15(水) 13:07


      '次の行へ
      iRow = iRow + 1
 の二行に代えて、
       If iRow = 17 Then
           iColumn = iColumn + 1
           iRow = 8
       Else
           '次の行へ
           iRow = iRow + 1
       End If
 としてみてください。

 ちなみに、
 Dim iColumn As Long
 の宣言が漏れています。
(γ) 2021/09/15(水) 13:27

ちなみにコードを提示するときは、きちんとSub XXXX を含めて書いた方が誤解がないですよ。

このコードはシートモジュールに書かれたものですが、
あなたのコードではそれが明示的に書かれていないので、
標準モジュールと普通は解釈されます。
すると、
Call Hyperlinks.Add(Anchor:=Cells(iRow, iColumn), 以下省略
ではエラーになります。Hyperlinksの頭にシートの特定が必要になります。

(γ) 2021/09/15(水) 13:40


無事にできました!
誤解のない書き方もありがとうございます!
またアドバイスを頂くときは気を付けます!
(素人) 2021/09/15(水) 13:51

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.