いつもお世話になります。
OSはwin11、エクセルはoffice365です。
下記の参考コードでは、
B列には No
C列には シート名です
シート数は46シートです。
この数だとデイプレーからはみ出すため、
見易くするために下記のように2列に分けたいです。
B列には No 0~24 range(B2:B26)
C列には 26シート range(C2:C26)
D列には No 25~50 range(D2:D26)
E列には 24シート(余りは余裕に) range(E2:E26)
ご教授よろしくお願いいたします。
参考
Sub 目次作成()
Dim no As Integer
no = 2
Dim wsMain, ws As Worksheet
Set wsMain = Worksheets("8目次")
For Each ws In Worksheets
If ws.Name <> wsMain.Name Then
wsMain.Hyperlinks.Add _
Anchor:=wsMain.Cells(no, "C"), _
Address:="", _
SubAddress:=ws.Name & "!A1", _
TextToDisplay:=ws.Name
wsMain.Cells(no, "B").Value = no - 2
no = no + 1
End If
Next ws
End Sub
No.4ベストアンサー
- 回答日時:
こんにちは
方法はいろいろあります。
連番の no からセルの位置を計算することが可能です。
番号を記載するセル位置として、
行番号 = (no Mod MaxR) + 2
列番号 = (no \ MaxR) * 2 + 2 (MaxR は表示行数)
を用いれば可能です。
計算するのがややこしければ、記載する行番号、列番号を変数にしておいて、
記載する毎に行番号を+1し、
行番号がMax(ご質問の場合は26)を超えたら、列番号を+2、行番号を2に戻す
としてもできますね。
以下は、(行番号、列番号)を変数にする代わりに、記載するセル位置(=Range)を変数として同様に行う方法での例です。
Sub TableOfSheets()
Dim sh As Worksheet, rng As Range, n As Long
Const TS = "8目次" ' 目次シート名
Const MaxR = 26 ' 最大行番号
With Worksheets(TS)
Set rng = .Range("C2")
n = 0
For Each sh In Worksheets
If sh.Name <> TS Then
rng.Offset(, -1).Value = n
.Hyperlinks.Add Anchor:=rng, TextToDisplay:=sh.Name, _
Address:="", SubAddress:=sh.Name & "!A1"
n = n + 1
Set rng = rng.Offset(1)
If rng.Row > MaxR Then Set rng = rng.Offset(1 - MaxR, 2)
End If
Next sh
End With
End Sub
No.3
- 回答日時:
No.1です。
失礼しました。
>Anchor:=wsMain.Cells(no-25, "E"), _ ’E列の25減した行へ
’以降はわかりやすいようにコメントとして追加していましたが、が(_:改行)の後には付けられませんね。
’~を削除してください。
追伸
プログラムには個性が出るので、なるだけ変更の無いようにするようにしています。
しかし、No.2さんのようにわかりやすい変数名を用いた方が変更が楽ですよ。
No.2
- 回答日時:
以下のようにしてください。
noは、0~45まで変化します。
wrow,wcolはnoに対応する、行番号、列番号です。
Sub 目次作成()
Dim no As Integer
Dim wrow As Long
Dim wcol As Long
no = 0
Dim wsMain, ws As Worksheet
Set wsMain = Worksheets("8目次")
For Each ws In Worksheets
If ws.name <> wsMain.name Then
If no < 25 Then
wrow = 2 + no
wcol = 2
Else
wrow = no - 23
wcol = 4
End If
wsMain.Hyperlinks.Add _
Anchor:=wsMain.Cells(wrow, wcol + 1), _
Address:="", _
SubAddress:=ws.name & "!A1", _
TextToDisplay:=ws.name
wsMain.Cells(wrow, wcol).Value = no
no = no + 1
End If
Next ws
End Sub
No.1
- 回答日時:
こんな感じかな?
・・・
If ws.Name <> wsMain.Name Then
If no<=26 then ’2列目にするかどうかの条件:1列目
wsMain.Hyperlinks.Add _
Anchor:=wsMain.Cells(no, "C"), _
Address:="", _
SubAddress:=ws.Name & "!A1", _
TextToDisplay:=ws.Name
wsMain.Cells(no, "B").Value = no - 2
Else ’2列目
wsMain.Hyperlinks.Add _
Anchor:=wsMain.Cells(no-25, "E"), _ ’E列の25減した行へ
Address:="", _
SubAddress:=ws.Name & "!A1", _
TextToDisplay:=ws.Name
wsMain.Cells(no, "D").Value = no - 2 ’D列へ表示
End IF
no = no + 1
End If
・・・
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 【ご教示ください】VBAの記述方法がわかりません。 2 2022/08/12 21:28
- Excel(エクセル) vbaで列幅について 1 2022/11/15 08:31
- Visual Basic(VBA) 【前回の続き続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/24 20:49
- Visual Basic(VBA) エラーコード1004 6 2022/06/09 14:12
- Visual Basic(VBA) ExcelVBAに関する質問 3 2023/02/17 10:47
- Excel(エクセル) VBAの指示の内容 昨日こちらでご教示頂いたのですが初心者な為、一つ一つの指示が何をやっているのかわ 2 2022/10/25 18:08
- Visual Basic(VBA) コード名シートA列と集計シートA列のコードが一致したら、コード名シートA5からk12の範囲をコピーし 1 2022/08/29 23:46
- Excel(エクセル) vba 転記するときの最終行について 2 2022/09/03 09:31
- Visual Basic(VBA) ローマ字、ハイフン付きの並び替え ローマ字抽出方法 Excelマクロ 4 2022/04/01 14:10
- Visual Basic(VBA) 【前回の続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/16 16:44
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
for whichの使い方
-
There is not/ There is noの違い
-
エクセルVBAでEdate関数は使え...
-
次の並べ替え問題を教えてくだ...
-
誰か教えてください
-
0 Degrees
-
教えて下さい!
-
イェイイェイイェイ イェイイェ...
-
no + 名詞 は、単数?複数?
-
knowledge on, about, of
-
ain't no ~を教えてください。
-
英語ができる方、問題をお願い...
-
There is no such thing as
-
NO WAR NO ABE
-
VBA Scripting.Dictionary 連想...
-
「特になし」を英語で書くとき
-
All hat and no cattle.という...
-
no signal
-
lodged securities と register...
-
noの後の語
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
for whichの使い方
-
「no+比較級」の2つの異なる...
-
エクセルVBAでEdate関数は使え...
-
誰か教えてください
-
no matter how close we are to...
-
「特になし」を英語で書くとき
-
no other~について
-
knowledge on, about, of
-
There is not/ There is noの違い
-
次の並び替え問題を教えてくだ...
-
イェイイェイイェイ イェイイェ...
-
英語で「もう2~3日待ってくだ...
-
I’m not younger than you are ...
-
UNI EN ISO 14001
-
戦争反対を英語で?
-
イマジンの歌詞のまちがい?
-
changeとexchangeのちがい
-
英語ができる方、問題をお願い...
-
there is no way to do/of doin...
-
I don't knowを I don't no と...
おすすめ情報
ご指導を頂いたコードを挿入し下記します。
実行すると
1 このコード部か赤く表示される
wsMain.Hyperlinks.Add _
Anchor:=wsMain.Cells(no-25, "E"), _ ’E列の25減した行へ
Address:="", _
SubAddress:=ws.Name & "!A1", _
TextToDisplay:=ws.Name
2 青く反転し コンパイルエラー 構文エラー が表示される
wsMain.Hyperlinks.Add _
Anchor:=wsMain.Cells(no-25, "E"), _ ’E列の25減した行へ
再度ご指導頂けませんか。