86本目 総当たり表(マトリクス表)の作成

VBA100本ノック

VBA100本ノック 86本目を動画で解説しています。Excelの神髄さんの模範解答はコチラ


問題

シートの先頭に「相関表」シートを挿入します。
「相関表」以外の全シートの総当たり表(マトリックス表)を作成してください。
B2セルを起点にして縦横にシート名を配置し、画像を参考に罫線を引き、文字配置(表全体を中央)してください。
※この問題は次問題と連作です。

解答

Sub 相関表シートを挿入してマトリクス表を作成()

'シートを削除する
    Application.DisplayAlerts = False
    On Error Resume Next
    Sheets("相関表").Delete
    On Error GoTo 0
    
'シートを挿入する
    Dim ws相関表 As Worksheet
    Set ws相関表 = Worksheets.Add(before:=Sheets(1))
    ws相関表.Name = "相関表"

    Dim rng As Range  'B2を基準に
    Set rng = ws相関表.Range("B2")
    Dim i As Long
    
'表作成、罫線、書式変更
    With rng
        For i = 2 To ThisWorkbook.Sheets.Count
            .Offset(i - 1, 0).Value = Sheets(i).Name '行
            .Offset(0, i - 1).Value = Sheets(i).Name '列
            .Offset(i - 1, i - 1).Borders(xlDiagonalDown).LineStyle = xlContinuous
        Next i
        .CurrentRegion.Borders.LineStyle = xlContinuous '全体の罫線
        .CurrentRegion.HorizontalAlignment = xlCenter  '全体を中央揃え
    End With
    
End Sub

■考え方・流れ
①「相関表」シートを先頭に挿入する
➁シート名を埋める
③罫線を入れる
④表範囲を中央揃えにする

87本目と続いてるので無理やりでも解かねばならん…
解かねばならんのだ…!と自分に言い聞かせて解きました☆

新人君
新人君

次回へと続いてると
緊張しますよね!

ブチョ
ブチョ

俺は緊張したこと
一度もないけどね?

新人君
新人君

うらやましい…

“相関表”シートを先頭に挿入

シートの挿入もいくつか注意が必要でしたね。

“ws取引先”って変数に、Worksheets.Addメソッドさんの結果をぶち込み!

挿入場所(Index)はAddメソッドさんの引数で指定可能でしたね。
今回は必ず1シート目に”相関表”シートを持ってきたいので、
Before:= Sheets(1)としました。

ただーし!もし既に”相関表”ってNameのシートが存在していた場合も考慮して…
先に”相関表”シートを削除するコードも書いておいたよ!

“相関表”ってシートがあるかどうかの判定をしてもいいけど、
気分的にOn Error Resume Nextさんでエラーをすっ飛ばして解決。

あ、終わったらOn Error Goto 0でErr.Numberを元に戻してあげてね☆

新規挿入、削除系は考えることが多くて難しいっすね~。

シート名を埋める

“相関表”シートを先頭(1シート目)に入れたことを利用。
2シート目から最後のシートまでループ。

今回は基準のセル(B2)を”rng”という変数としたので、
そこを基準としてOffsetプロパティさんを使用。

結果はこんな感じ!

いい感じンゴ~~。

罫線を入れる

表範囲に罫線をぶちぶちぶちこんでいくよ!
Excelの神髄さんのサイトを参考にしたら余裕のよっちゃん!

ムフフ!ありがとうございますぅ~!

斜めの罫線を引きたい場合も、
言うまでもなく神髄さんのサイトに記載がございまするぅ~♪

罫線を引くセルは、rngを基準として対角線上のセルだね!!

出来上がりはこんな感じ↓☆

斜め罫線…手動でやるのってクソめんどいっすよね。

表範囲を中央揃えにする

これは動画にするかちょっと悩んだw
流石に今のワシにとっちゃあ簡単よ!

最後にWithを設定する派です。
何回もrng出てきてウザいからね。

以上!完成~!!

ブチョ
ブチョ

お疲れ様!
頑張ったね!

新人君
新人君

あざます!

あとがたり

おはこんばんちは。uぷ主です。
86本目、マトリクス表を作る問題でした。

前回の85本目、その前の84本目?あたりが超々難しかったから…
今回は比較的楽しんで取り組めましたンゴ!

やっぱ、楽しいってのが一番ですよね。何事も。

主は今の仕事が超々嫌いなので…
全然成長してないです。

ただ、Excelを使う場面だけは最強に楽しいので、
Excelスキルだけが伸びていく感じ~!
にょきにょき!

だけど求められてるのはExcelじゃなくて他の仕事のスキルって言う…
あぁ…Excelで飯を食っていきたい…

とまあ、話がそれたけど…
今回も楽しかったです~!!

神髄さん!ありがとうございましたぁぁ!!

そして最後までご視聴いただいたみなさん!ありがとうございました!!

コメント

タイトルとURLをコピーしました