連続でセルの結合と解除をエクセルVBAで繰り返すセルの操作セルの文字色・背景色まとめて変更TwitterFacebook0はてブ0LINEコピー2019.09.01スポンサーリンクエクセルVBAを使うならば、出来る限り結合セルは使いたくないですよね。見栄えを優先してセルを結合している場合、並べ替えを行うとエラーになりますがどうしても結合セルを並べ替えする場合ありませんか?その場合は、並べ替える前にまず結合セルを解除してから並べ替えを実行し、その後に結合すれば可能です。同じ内容のセルを結合する結合セルに連番を自動付与する指定範囲のセルの結合・解除を自動判別して行う結合セルを解除して各セルに同じ値を入れるセルの結合Merge・セル解除UnMergeメソッドエクセルVBAでセルを結合するにはRangeオブジェクトのMergeメソッドを使います。波乗りアヒルここでは、ユーザーフォームに配置したコマンドボタンにVBAコードを書き込む例をお話しします。空欄セルを1か所結合・解除するセルの範囲がA1:B1を結合します。結合されているセルの範囲がA1:B1を解除します。SubVBA解説コマンドボタン2が押されたらセル範囲A1:B1を結合解除するマクロ終了セルの結合時と違い、セルの解除は結合されていないセルを選択してもエラーにはならないので、A列全体(”A:A”)を指定しても大丈夫です。「セルを結合すると、左上の値のみが保持され、他のセルの値は破棄されます。」なんていうメッセージ出ますよね。値があるセルを結合すると出てくるメッセージ初めてならばいいのですが、毎度の作業で見慣れてくると邪魔に感じるので、セルの結合時に表示される確認メッセージが出ないようにVBAコードを付け加えましょう。結合されているセルの範囲がA1:B1を解除する方法は、空欄セルの解除の時と一緒です。指定したセル範囲を行単位で結合するセルを結合したい場所が複数ある場合に(”A1:B1′′)(“A2:B2”)(“A3:B3”)・・・とVBAコードを書き続けるのは面倒なので、RangeオブジェクトのMergeメソッドの引数「Across」を”True”にすると指定した範囲を行単位で結合してくれます。SubVBA解説コマンドボタン1が押されたらセル範囲A1:B3を行単位で結合するマクロ終了Trueを付け加えただけなので簡単で、一応Trueの代わりにFalseまたは省略すると指定した全ての範囲を結合しますので、最初の空欄セル結合と一緒なのです。スポンサーリンクセルの結合の実用例ここまでは基本的なVBAコードを使ったセルの結合と解除をお話ししましたが、実際にMergeメソッドを使うには、エクセル自体が判断して自動的に結合と解除をやってもらわなくては作業効率化にはなりません。同じ内容のセルを結合する支店ごとにセルを結合したり顧客名簿の「あいうえお順」などの見出しを結合などを、コマンドボタン1回押すだけで自動的にエクセルが作業してくれるので一瞬で仕事が片付きますよ。ここではA列の同じ支店名が並んだ時に自動的にセルを結合させることを書いてみました。確認メッセージを非表示にするデータが3行目から入力されているので「3」とするA列のi行目の値が空白になるまで繰り返し処理を始める1行下のセルの値を見るので「1」とするA列のi行目とi+j行目の値が同じ場合はjに1を加えて調べ続ける同じ値だった行を結合するこの作業をくり返す確認のメッセージを表示に戻すマクロ終了これでA列の支店名が同じ時はこのように結合されました。ちなみに、A列と同じことをD列でも一緒に行うならば、Application.DisplayAlertsで挟まれた部分のVBAコードを続けて並べれば可能です。波乗りアヒルまた、同じ内容のセルを結合するには下記コードでも可能です。結合セルに連番を自動付与するデータが入力されると自動的に連番を付与していて、セルの結合などで連番が変わってしまうので、セル結合後に再度番号を付与させる方法です。SubVBA解説コマンドボタン1が押されたら画面更新停止して処理を速くする変数iとデータ型(Range)の変数myRangeを宣言する変数myRangeに自動連番開始セルとなる「A2」をあてる1から5の連番を付与する為にFor~Nextステートメントで繰り返し処理を開始する変数myRangeの1行下の結合セルに1つずつ移動する変数myRangeの値は連番の変数iにする指定した5まで繰り返すメモリ解放マクロ終了この結合セルに自動連番を付与するVBAコードを単独で使用したことはありません。上記の「同じ内容のセルを結合する」VBAコードに追加記述して、一括で処理する時に時々使っています。理由は簡単で、セルを結合してから連番を付与するのではなく、単純に指定したセルに連番を付与するだけのVBAコードだからです。指定範囲のセルの結合・解除を自動判別して行う簡単に例えるとスイッチのON・OFFみたいなもので、セルが結合されている時にコマンドボタンを押すと結合セルが解除され、解除されている時に押すと結合するというものです。SubVBA解説コマンドボタン1が押されたらセルA3が結合されている場合セルA3を含む結合セルを解除するそうでない場合(解除されている時)セルA3~A72まで結合するマクロ終了とてもシンプルなVBAコードですが、このままだと画面更新停止処理も確認メッセージの扱いも入れていませんので、画面があちこち移動したり、メッセージが出たりするので、実際使う時はそれぞれのVBAコード忘れずに入れておいてくださいね。結合セルを解除して各セルに同じ値を入れる結合セルを解除すると最初のセルにだけ値が入力されますが、残りの解除されたセルは空欄のままで、罫線も消えてしまいます。リストを結合前の元通りにするイメージで、結合セルを解除と同時に各セルに結合前と同じ値を入力して罫線も付けるようにVBAコードを書いて使っています。変数Iの145行目まで処理を繰り返すセルA2~F72とA75~F145に罫線を実践で引くセルA2:D72とA75:D145とD2:F72とD75:F145に外枠を中太線で引く画面更新再開に戻すマクロ終了これはあらかじめ、リストアップされたリストをAA列から順に用意しておいて、ここからA列から順に映して表にしています。表の中で数式の入っていないセルだけ空白にする方法エクセルでデータなどを入力した表の入力データをクリアしたい事ありませんか?でも数式や関数が入っているセルまで消されては困りますよね。数式の入っていないセルだけ空白にする技が使えると、仕事の作業効率が上がるのでぜひマネして取り入れてみてはいかがですか?2018.12.03セルの操作エクセルVBAで自動的に連番をつける方法VBA自動連番付与をデータ入力をする時に欲しくなりませんか?伝票番号や顧客番号などは自動的に通し番号「連番」が付与されると仕事効率が良くなります。空白セルに0を選択範囲まとめて入力エクセルで表などにデータが全て入っていれば問題のですが、空欄の時に処理ができなくなることありませんか?そんな時に自動的に空欄セルを見つけて、任意の値を入れてくれたら便利ですよ。住所録などで入力済み最終行を選択してユーザーフォームに配置した複数のテキストボックスに、同じ行にある複数のセルの値を表示させたいことありませんか?ついでに1行上ボタンや1行下ボタンも合わせて作ってみました。2019.08.31このサイトに掲載のVBAコードの動作確認済み環境は下記の通りです。・Excel2010パーソナルにExcel2016プロフェッショナルをインストール・Excel2007プロフェッショナルにExcel2016プロフェッショナルをインストール上記環境以外での動作確認は行っておりません。サンプルのVBAコードは自由にコピーしてご自身のエクセルに使っていただいて構いません。波乗りアヒルエクセルの勉強お疲れ様です。旅行先での移動に鉄道やバスを使う時にフリーパスや往復乗車券付きクーポンを使ってお得に楽しみたい時、意外と調べるのが面倒なんですよね。通常1人分の料金表示なのにJRのフルムーン夫婦グリーンパスは2人分の料金表示だったり、電話で聞いて分かる事も。tripbowl.net誰でもリニア試乗ができるJR東海専用応募サイト2019年第2回リニア試乗募集発表!2027年品川~名古屋間で開通予定の中央リニア新幹線。Reserved.HOMEお問い合わせプライバシーポリシーサイトマップタイトルとURLをコピーしました。