[[20140718095558]] 『マクロで結合セルにシートの一覧表を作成したい』(まめ太郎) ページの最後に飛ぶ

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

 

『マクロで結合セルにシートの一覧表を作成したい』(まめ太郎)

マクロ無知者なのですが、いろいろ探してはコピペで使っております。

50シートあるエクセルファイルで
一覧表シートにシート名を以下のようなマクロで表示しています。

Sub シート名の表示()

ActiveSheet.Unprotect

    Dim i
    For i = 3 To Sheets.Count
        Cells(2, 1).Offset(0, i) = Sheets(i).Name
    Next i

ActiveSheet.Protect
End Sub

セルD2から横へ
左から3番目のシートから順に表示させています。

これをD2とE2を結合し、F2とG2を結合(以降続く・・・)にした場合、
マクロを実行すると、以下のように1つ飛びに表示されてしまいます。

D2:E2(結合)/F2:G2(結合)
Sheet3    /Sheet5

これを解決するマクロなどありますでしょうか。
出来ればそのまま使えるマクロを教えて頂けると幸いです。
よろしくお願い致します。

< 使用 Excel:Excel2013、使用 OS:Windows7 >


 >これを解決するマクロなどありますでしょうか。
 >出来ればそのまま使えるマクロを教えて頂けると幸いです。 

 ではなく、どうしてそうなるのか、
 それを修正するにはどうするればよいのかを理解して欲しいと思いますが、

 セル結合をしている場合、左上のセルが全体を代表しますので、記載セルの対象を
 適切に指定するよう修正してください。

 D列から2列ごとであれば
         Cells(2, 4 + (i-3)*2).Value = Sheets(i).Name

 わかりずらかったら別変数を使用して
    c = 4
    For i = 3 To Sheets.Count
        Cells(2, c).Value = Sheets(i).Name
        c = c + 2
    Next
 のようにしたらどうでしょうか。
(Mook) 2014/07/18(金) 12:03

Mookさん

ありがとうございます!
調べて「Step」と言うのを見つけて、
「Step2」とか入れてみたのですが、
いまいちよく分かりませんでした。。。

Cells(2, 4 + (i-3)*2).Value = Sheets(i).Name

を使わせて頂きました。

勉強したいと思っているのですが、
何から手をつけてよいのか全く見当もつかず、
いろいろ調べてみているのですが、
お恥ずかしいですが、それでも理解出来ないでおります。

大変助かりました。ありがとうございました。
(まめ太郎) 2014/07/18(金) 13:28


 動いたからそこでおしまい、と終わらず理解するまで考えて欲しいと思います。

 Cells(2, 4 + (i-3)*2).Value = Sheets(i).Name 
 の前半の2は2行目の2です。
 後半の 4+(i-3)*2 は列数です。
 i は 3 から シート数まで変化するのですから、

   i    4 + (i-3)*2)
 −−−−−−−−−−−
   3       4  ・・・   D列
   4       6  ・・・   F列
   5       8  ・・・   H列
   :       ;
 となっていきます。

 展開した形の 2*i-2 を書いても同じことです。

 ぜんぜん難しい話ではありませんから、これくらいは理解する努力をしてみてはどうでしょうか。
(Mook) 2014/07/18(金) 14:37

コメント返信:

[ 一覧(最新更新順) ]


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