VBA練習問題解答
練習問題31(セル結合を解除して値を埋める)解答

Excelマクロ練習問題集、エクセルVBAの学習教材
最終更新日:2019-07-30

練習問題31(セル結合を解除して値を埋める)解答

マクロVBA練習問題31の解答ページです。


マクロVBA練習問題

セル結合されていると、マクロVBAでは扱いにくい場合が多々あります。
そこで、
セル結合を解除して、結合されていたセル範囲に同じ値を入れたいと思います。
以下の表を見てください。

                 
  B2 C2 D2 E2 F2 G2 H2  
  B3 C3 D3 F3 G3 H3  
  B4 C4 D4 E4 F4 G4 H4  
  B5 D5 E5 H5  
  B6 D6 H6  
  B7 D7 E7 F7 G7 H7  
  B8 D8 E8 F8 G8 H8  
  B9 C9 D9 E9 F9 G9 H9  
                 
※上記表の全体を選択し、コピー(Ctrl+C)の後、エクセルのシートのA1セルに貼り付け(Ctrl+V)してください。

練習問題用のExcelファイル
上記のように、
ところどころ不規則にセル結合されているシートがあります。
このようなシートがブック内に複数あります。
全シートに対して、
セル結合を解除して、結合されていたセル範囲に同じ値を入れてください。
上記表であれば、処理後の結果は以下のようになります。

B2 C2 D2 E2 F2 G2 H2
B3 C3 D3 D3 F3 G3 H3
B4 C4 D4 E4 F4 G4 H4
B5 C4 D5 E5 E5 E5 H5
B6 C4 D6 E5 E5 E5 H6
B7 C4 D7 E7 F7 G7 H7
B8 C4 D8 E8 F8 G8 H8
B9 C9 D9 E9 F9 G9 H9

では、お考えください。
すぐに解答を見ずに、必ず自力で書けるとこまででも良いので書きましょう。

シンキングタイム

シンキングタイム開始


シンキングタイム終了

当サイトのコンテンツ
ExcelマクロVBA入門
マクロVBA入門シリーズでは、ExcelマクロVBAを実務で自在に使いこなし業務を効率化できるようになることを目的として、始めはより詳しく丁寧に解説しつつ少しずつ難易度を上げることで無理なく学習を進められるようにしています。マクロとはエクセルの操作を自動化する機能で、中身はVBA言語で記述されます。

書くべきマクロVBAが分からない時は、
ここでじっくり勉強してから再チャレンジしてください。

マクロVBA練習問題解答

では解答のマクロVBAコードです。

Sub 練習31()
  Dim ws As Worksheet
  Dim target As Range
  Dim tRange As Range
  Dim v As Variant
  For Each ws In Worksheets
    For Each target In ws.UsedRange
      If target.MergeCells Then
        v = target.Value
        Set tRange = target.MergeArea
        tRange.MergeCells = False
        tRange.Value = v
      End If
    Next
  Next
End Sub

VBAコードの個別の解説は不要でしょう。
セル結合に関する、プロパティ・メソッドについては以下を参照してください。
第85回.結合セルの扱い|マクロVBA入門
セルが結合されていると、マクロでは時に扱いづらい事があります、セル結合されている場合に、VBAでどのように取り扱うかを解説します。そもそも、やたらにセル結合すべきではないのですが、見た目重視で作られたシートでは、セル結合が頻繁に使用されているものです。

セル結合を解除した後では、範囲を把握できなくなってしまいますので、
結合を解除する前に、結合範囲を一旦変数に入れて記憶しています。

セル結合に入っているValueは、先頭セルだけにしか入っていませんので、
target.Value
これだけで済ませていますが、
target.Item(1).Value
このように具体的に記述しておくのも、後で見た時に理解しやすいかもしれません。



同じテーマ「マクロVBA練習問題解答」の記事

練習問題22(総合練習4)解答
練習問題23(総合練習5)解答
練習問題24(再帰呼出し)解答
練習問題25(各種VBA関数)解答
練習問題26(全シート処理とハイパーリンク)解答
練習問題27(データ分割し別ブック保存)解答
練習問題28(シートを別ブックにして値のみにする)解答
練習問題29(ロット引き当て)解答
練習問題30(マトリックス→リスト形式)解答
練習問題31(セル結合を解除して値を埋める)解答
練習問題32(連続数値部分を取り出し記号で連結)解答


新着記事NEW ・・・新着記事一覧を見る

シートコピー後のアクティブシートは何か|ツイッター出題回答 (2023-09-19)
Excel関数の引数を省略した場合について|ツイッター出題回答 (2023-09-14)
セル個数を返すRange.CountLargeプロパティとは|VBA技術解説(2023-09-08)
記号を繰り返してグラフ作成(10単位で折り返す)|ツイッター出題回答 (2023-08-28)
シートを削除:不定数のシート名に対応|VBAサンプル集(2023-08-24)
ランクによりボイントを付ける(同順位はポイントを分割)|ツイッター出題回答 (2023-08-22)
OneDrive使用時のThisWorkbook.Pathの扱い方|VBA技術解説(2023-07-26)
列幅不足による###表示や指数表示を判定する|VBA技術解説(2023-07-12)
シートを削除:不定数のシート名に対応|VBAサンプル集(2023-07-04)
シート関数のCOUNTIFS,SUMIFS,MAXIFSと同じ処理|Power Query(M言語)入門(2023-02-28)


アクセスランキング ・・・ ランキング一覧を見る

1.最終行の取得(End,Rows.Count)|VBA入門
2.RangeとCellsの使い方|VBA入門
3.繰り返し処理(For Next)|VBA入門
4.変数宣言のDimとデータ型|VBA入門
5.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
6.マクロとは?VBAとは?VBAでできること|VBA入門
7.ブックを閉じる・保存(Close,Save,SaveAs)|VBA入門
8.並べ替え(Sort)|VBA入門
9.Range以外の指定方法(Cells,Rows,Columns)|VBA入門
10.条件分岐(IF)|VBA入門




このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。

記述には細心の注意をしたつもりですが、
間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。
掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。



このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
本文下部へ