質問: iPage Then %> ?page=<%= i %>"><%= i %> <% Else %> ?page=<%= i %>"><%= i %> <% End If Next End Sub %>
回答: ``` <% Dim iRangeOfPageNum '表示するページ番号の範囲(現ページの前後数、×2+1が表示数) Dim iBeginOfPageNum Dim iEndOfPageNum iRangeOfPageNum = 2 ~省略~ iEndOfPageNum = iPage + iRangeOfPageNum '現在ページから指定(2)ページ後のページ番号までの表示とする If iEndOfPageNum <= iRangeOfPageNum*2 Then '☆最低でもiRangeOfPageNum*2 +1ページを表示するように修正する iEndOfPageNum = iRangeOfPageNum*2 +1; '☆ End If '☆ If iEndOfPageNum > iPageCount Then '最終ページを過ぎていたら修正する iEndOfPageNum = iPageCount End If iBeginOfPageNum = iEndOfPageNum - iRangeOfPageNum*2 '表示する最後のページ番号の指定(2)ページ前のさらに指定(2)ページ前(*2)からの表示とする If iBeginOfPageNum > 1 Then '1ページ目より後ろからなら省略文字を表示する %> ... <% Else '1ページ目より後ろでない(前である)ならば修正する iBeginOfPageNum = 1 End If '*** ページ番号を表示する For i = iBeginOfPageNum To iEndOfPageNum If i = iPage Then %> ?page=<%= i %>"><%= i %> <% Else %> ?page=<%= i %>"><%= i %> <% End If Next '表示したページ番号よりまだ後ろがあるなら省略文字を表示する If iEndOfPageNum < iPageCount Then %> ... <% End If End Sub %> ```