No.5ベストアンサー
- 回答日時:
こんにちは。
以下は、私がツールバーで使っているものです。
そのままですと、書式がCenter になってしまいますので、左寄せにします。また、これは、トグルになっていますから、同じ範囲を選択すれば、元に戻すことが可能です。
なお、これは、良く使われるものですから、個人用マクロブック側に入れて呼び出しています。
'-------------------------------------------------
Sub MergeCells()
Dim r As Range
If StrComp(TypeName(Selection), "Range", 1) = 0 Then
For Each r In Selection.Rows
If r(1).MergeCells = False Then
r.Merge
With r.Rows
.HorizontalAlignment = xlLeft
.VerticalAlignment = xlBottom
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
End With
Else
With r
.UnMerge
.HorizontalAlignment = xlGeneral
End With
End If
Next r
End If
End Sub
Wendy02さん、ご回答ありがとうございます。
マクロをご提示いただきありがとうございます。
このようなやり方でも実現できるのですね。
セル毎のオプションも多様にあることがわかり、勉強になりました。
早速やってみましたが、無事実現できました。ありがとうございました。
以下他の方にも質問して恐縮なのですが、
よければご意見お聞かせ願えないでしょうか。
聞きたい内容は、各行を結合させるごとに
毎回「最左端のデータのみ保持されますが、結合しますか?」
というようなダイアログが出るのですがこれは飛ばせるかどうかです。
お時間あればご意見くださると幸いです。
ご回答ありがとうございました。
No.10
- 回答日時:
#9の補足
なお、私のマクロは、既存の横結合ですと、文字の場合は左寄せされますが、数字を入れると、右寄せされてしまいます。それを結合と同時に左寄せします。また、トグルで横結合を戻しますと、書式も標準に戻すようになっています。
Wendy02さん、補足ありがとうございます。
> なお、私のマクロは、既存の横結合ですと、文字の場合は左寄せされますが、
> 数字を入れると、右寄せされてしまいます。それを結合と同時に左寄せします。
> また、トグルで横結合を戻しますと、書式も標準に戻すようになっています。
ご説明ありがとうございます。
この機会でマクロをもっと勉強したいと思います。
なかなか手の出ないマクロでしたが、思い切って質問して良かったです。
ありがとうございました。
No.9
- 回答日時:
こんにちは。
>毎回「最左端のデータのみ保持されますが、結合しますか?」
>というようなダイアログが出るのですがこれは飛ばせるかどうかです。
これは、既存の機能ですから、私個人は、一般的には手を付けませんてした。これは、なるべく既存のものに近づけるためです。今の段階では、Ctrl + z で戻す機能は付けておりません。ややこしくなるからです。DisplayAlerts でも、可能だと思います。
If r(1).MergeCells = False Then
r.Offset(, 1).Resize(, r.Columns.Count - 1).ClearContents '*この行を加えます。
r.Merge
なお、コマンドボタンに既存の横結合はあるのは知っていますが、私のマクロは、ふつうの結合ボタンと同じようにトグルになっています。横結合している範囲を選択して、もう一度、マクロを行えばわかります。ツールボタンは、結合と同じボタンを使っています。それでなければ、新たに作る意味がありません。もともと、私のコードは私のために作ったものです。
mars180sxさん、どうもありがとうございます。
Wendy02さん、ご返答ありがとうございます。
せっかくの技術を提供していただいたのに、自分本位なことばかり言ってしまい、申し訳ありませんでした。
みなさんは何かの経緯でマクロを開発されるのですし、
何かしら意図があってのスクリプト内容ということに気付くべきでした。
不快な気持ちにさせてしまったことをお詫び申しあげます。
トグル機能についてですが、前の回答で触れずすみませんでした。
ちゃっかり使わせていただいています。
また、新たにマクロのご提示ありがとうございます。
早速試させていただきました。
手作業を加えることなくすっきり結合されました。嬉しいです。
ご返答ありがとうございました。
No.8
- 回答日時:
度々失礼します。
お望みの形に出来たようなので、私もうれしく思います。
で、結合時にメッセージが表示される件ですが、以下の命令を
追記するとメッセージは表示されなくなります。
(強制的に注意ダイアログを表示しないようにする設定です)
=====================================================
Sub Macro1()
Application.DisplayAlerts = False ←この行を追記
|
(以下、前述と同じ)
=====================================================
制御系のプログラムを開発する仕事に従事しているので、処理の
速さには重点を置いているのですが、私から見てもWendy02さんの
コーディングの方が結合前の状態にも戻せるという点で優秀だと
思います。メッセージを非表示にする方法は上記と同じでOKな
はずです。
お役に立ちましたら、Wendy02さんにポイントを付与していただけると
幸いです。(_ _)m
mars180sxさん、ご返答ありがとうございます。
おかげさまで気持ちよく作業をすることができました。
> 制御系のプログラムを開発する仕事に従事しているので、処理の
> 速さには重点を置いているのですが、私から見てもWendy02さんの
> コーディングの方が結合前の状態にも戻せるという点で優秀だと
> 思います。メッセージを非表示にする方法は上記と同じでOKな
> はずです。
なんと、ということは贅沢にも使い分けができますね。
ありがとうございます。
早速ですが、戻したいときはWendy02さんのを、早く処理したいときはmars180sxさんのを使用させて頂いております。
色々な実現方法があるという点でもとても勉強させていただきました。
本当にありがとうございました。
No.7
- 回答日時:
>「最左端のデータのみ保持されますが、結合しますか?」
>というようなダイアログが出るのですが
このメッセージを表示しないようにするには
DisplayAlertsプロパティで前後を挟んでやります。
'---------------------------------------
Sub Test()
Dim Rng As Range
Application.DisplayAlerts = False
For Each Rng In Selection.Rows
Rng.Merge
Next Rng
Application.DisplayAlerts = True
End Sub
'----------------------------------------
以上ここまで。
myRangeさん、ご回答ありがとう御座います。
>DisplayAlertsプロパティで前後を挟んでやります。
このようなプロパティがあるとは・・。
丁寧にマクロも載せていただきありがとうございます。
早速やってみましたが、ダイアログが消えてとてもすっきりしました。
ありがとうございました。
No.6
- 回答日時:
> あとはこれを選択範囲ぶん繰り返すマクロを組めばできそうな気がしてきました。
ん???
範囲を選択して、このボタン(コマンド)一発で、やりたいことが出来るはずなので、もうマクロを組む必要は無いと思うのですが・・・
横方向に結合したい範囲が、離れたところにいくつもあるということでしょうか?
nattocurryさん、ご返信ありがとうございます。
> ん???
> 範囲を選択して、このボタン(コマンド)一発で、やりたいことが出来るはずなので、もうマクロを組む必要は無いと思うのですが・・・
>
> 横方向に結合したい範囲が、離れたところにいくつもあるということでしょうか?
いえ、私の勘違いでした。すみません。
勘違い(1)
横方向に結合は1行ずつ選択しないといけないと思っていた。
これはnattocurryさんへの投稿をしたあとすぐに間違いだと気付きました。
勘違い(2)
各行を結合させるごとに
毎回「最左端のデータのみ保持されますが、結合しますか?」という
ダイアログが表示されるのですが、
このとき「OK」ボタンを押下する作業が発生するので、
それもマクロで実現させる必要があると思っていました。
結果、繰り返しのマクロを組めばよいのでは、という結論に至りました。
これも勘違い(1)が解消されたあとすぐに気付いて補足するべきでした。
ご返信いただきありがとうございました。
No.4
- 回答日時:
すみませんでした。
当を得ていない回答だったようなのでリベンジさせていただきます。
以下のマクロは、選択した範囲を「各行毎」に自動でセル結合するものです。
Sub Macro1()
Dim lng_Row As Long
Dim lng_Column As Long
Dim lng_Rows As Long
Dim lng_Columns As Long
Dim cnt_1 As Integer
lng_Row = Selection.Row
lng_Column = Selection.Column
lng_Rows = Selection.Rows.Count
lng_Columns = Selection.Columns.Count
cnt_1 = 0
Do Until lng_Rows = cnt_1
Range(Cells(lng_Row + cnt_1, lng_Column), _
Cells(lng_Row + cnt_1, (lng_Column + lng_Columns) - 1)).Merge
cnt_1 = cnt_1 + 1
Loop
End Sub
mars180sxさん、ご返信ありがとうございます。
私のつたない文章にお応え下さってとても嬉しく思います。
マクロありがとうございます。
早速ためしてみました。
できました!!
自分でマクロを記録させるよりずっと早く処理してくれてありがたいです。
(自分の記録されたのを見てみたのですが長くなりすぎて意味不明でした・・)
ところで、各行を結合させるごとに
毎回「最左端のデータのみ保持されますが、結合しますか?」
というようなダイアログが出るのですがこれは飛ばせないですよね?
もしお時間があればご意見いただけると幸いです。
ご回答ありがとうございました。
No.3
- 回答日時:
マクロを作ることも出来ますが、Excelにそのような機能がありますよ。
表示 - ツールバー - ユーザー設定
「コマンド」タブ
分類:書式
コマンド:横方向に結合
この「横方向に結合」を、ツールバーのどこかに配置しておけば、
範囲を選択して、このボタンを押すだけで、やりたいことが出来ます。
nattocurryさん、ご回答ありがとうございます。
>コマンド:横方向に結合
これをやりたかったんです!!
こんなのがあったんですね。不勉強で皆様申し訳ありませんでした。
あとはこれを選択範囲ぶん繰り返すマクロを組めばできそうな気がしてきました。
(また懲りずに質問しそうですが・・)
本当にありがとうございました。
No.2
- 回答日時:
画像に記載されている文字が読み取れないので正解ではないかも
しれませんが-
Sub Macro1()
Selection.Merge
End Sub
これだけで選択した範囲が結合されるはずです。
mars180sxさん、ご回答ありがとう御座います。
>画像に記載されている文字が読み取れないので正解ではないかも
>しれませんが-
なんとも申し訳ありません。イメージの注釈をつけていました。
一応記載させていただきますと、
「※イメージを表すために別のセルに書いていますが、
本来は「別のセルではなく、そのセルが結合される」というようにしたいのです」
ということでした。
範囲選択のマージのマクロありがとうございます。
選択された範囲で1行ずつのマージを行いたかったので、
このマクロはまた別の機会に使わせていただきます。
ありがとうございました。
No.1
- 回答日時:
>イメージとしては
>(1)範囲選択する
>(2)マクロ実行する
マクロ記録をとればできることだと思います。
記録されたマクロからその時の範囲をRem化するだけじゃないかな
Sinogiさん、ご回答ありがとう御座います。
>マクロ記録をとればできることだと思います。
そもそもどんなマクロにすればよいのか自体もよくわかっていませんでした。
せっかく教えていただいたのに、もともとの説明が足りずすみません。
>記録されたマクロからその時の範囲をRem化するだけじゃないかな
ちょっと聞きなれない言葉なので、調べてみます。
解決方法が見えてきました。ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
塩化ナトリウムはなぜ共有結合...
-
カチオンとアニオンとは?
-
高校生です。 化学の質問です。...
-
c2h2の電子式と構造式について...
-
共役or非共役の見分け方
-
エクセルで大きな括弧()の方法
-
セルを結合するマクロで表示さ...
-
選択クエリで空欄のテーブルが...
-
C3H9Nの構造異性体をすべて書け...
-
硫酸の配位結合について 参考書...
-
Excelで結合されたセルを参照し...
-
化学基礎、分子式について。 長...
-
化学の1次結合,2次結合について
-
π電子の数え方
-
配位数・配位子・配座数って
-
オゾンの配位結合について
-
アミド結合とエステル結合
-
アセトン
-
なぜトランスデカリンは環反転...
-
硫酸銅はなぜ5水和物3水和物1水...
おすすめ情報