LoginSignup
2
4

More than 5 years have passed since last update.

VBA:縦方向に結合/横方向に結合&縮小して表示

Last updated at Posted at 2017-04-04

新人プログラマ応援にあたって

プログラミングTips紹介

テスト項目書の作成に役立ったのでご紹介。
処理前後にあるFocus = True(False)こちらのブログ記事のものを利用させて頂いております。
(よっぽどループ処理が多い時に入れるか、処理中のちらつきが気になるときに入れると良いです)
最初はテスターとして入ることもあるでしょうけれども、Excelマクロ/VBAを学んでおくと、作業効率がグンと上がるのでオススメです。

イメージ画像は後日更新します。
利用方法としては、画面左上のリボンメニューから追加、マクロを指定してください。
(やり方はここでは割愛します。ググる力(調査力)も大事にしてみてください)

補足

  • コメントアウト(処理の無効化)している部分は、頭の「'」だけを外してもかまいません。
  • ↑特に、処理量が多いときにフリーズ(したような状態)をある程度防げます。
  • Focusは「(処理に)集中する」の意味。Trueで高速化モード、Falseで通常モード。
  • ↑セルへの入力や再表示って、回数が多いと結構時間かかるので、入力周りのループ処理には是非入れてください。
  • ↑※エラー時も含め、必ず通常モードに戻る書き方をしてください。通常モードに戻らないと、数式などの再計算が行われないままになります。(3つめのサンプルに例を掲載します)

ソースコード

MergeCell.bas
Public Sub MergeVartical() '縦方向の結合
    On Error GoTo Finally 'エラーが起きたら最後の処理へ
    Dim colRng As Range '選択列を格納するのに宣言

    Focus = True '描画等の処理停止

    For Each colRng In Selection.Columns '選択範囲の列ごとに
        colRng.Merge  '選択部分の列を結合
        'DoEvents  '「応答無し」の防止用のおまじない
    Next

Finally:
    Focus = False '描画等の処理再開
End Sub

Public Sub MergeHorizontal()  '横方向に結合&縮小して表示
    On Error GoTo Finally 'エラーが起きたら最後の処理へ
    Dim rowRng As Range '選択行を格納するのに宣言

    Focus = True '描画等の処理停止

    For Each rowRng In Selection.Rows '選択範囲の行ごとに
        rowRng.Merge  '選択部分の行を結合
        rowRng.ShrinkToFit = True  '結合セル内に収まるように文字を縮小
        'DoEvents  '「応答無し」の防止用のおまじない
    Next

Finally:
    Focus = False '描画等の処理再開
End Sub

' 参考:疑似Try-Catch-Finally
Sub ErrCatchFinally()
    On Error Goto Err

    Focus = True '描画等の処理停止

    ' 実行時エラーが起こるような処理

    Goto Finally ' 何事も無ければ最後の処理へ
Err:
    ' エラー情報の表示
    MsgBox "<" & Err.Number & ">: " & Err.Discription 
Finally:
    Focus = False '描画等の処理再開
End Sub
2
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
4