エクセルVBAで結合セルの真ん中にチェックボックスを作成する方法を教えて下さい。
数個下の質問で結合されたセルに一つだけチェックボックスを作る方法を質問した者です。
度々すみません。
今度の質問ですが、結合したセルの上下左右の真ん中にチェックボックスを作る方法を教えていただけないでしょうか?
現在のプログラムは下記のようになっております。
宜しくお願い致します。
Dim ss As Excel.Range, cbx As CheckBox
With Selection.Parent
For Each ss In Selection
If (ss.MergeArea.Column = ss.Column) * (ss.MergeArea.Row = ss.Row) Then
Set cbx = .CheckBoxes.Add(Left:=ss.Left, Top:=ss.Top, _
Height:=ss.Height, Width:=ss.Width)
cbx.Text = ""
RowCnt = Selection.Row '選択されているセルの行をRowCnt変数で表現
cbx.LinkedCell = "A" & RowCnt '選択されているセルのA列にチェックボックスを作成
cbx.Display3DShading = False '3D表示なし
With cbx.ShapeRange
.Fill.Solid
.Fill.Visible = msoFalse '塗りつぶしなし
.Line.Visible = False '線on,off
.Line.Weight = 0.25 '線幅
.Line.ForeColor.RGB = RGB(0, 0, 0) '線色
End With
End If
Next
End With
No.1ベストアンサー
- 回答日時:
> Set cbx = .CheckBoxes.Add(Left:=ss.Left, Top:=ss.Top, _
> Height:=ss.Height, Width:=ss.Width)
を以下のように修正すれば「ほぼ」セルの中央に表示されると思います。
Set cbx = .CheckBoxes.Add(Left:=0, Top:=0, Height:=0, Width:=0)
cbx.Top = ss.Top + (ss.MergeArea.Height - cbx.Height) / 2
cbx.Left = ss.Left + (ss.MergeArea.Width - cbx.Width) / 2
補足説明)
・「Height:=0, Width:=0」チェックボックスのサイズが分からないので一番小さなサイズを設定
しています。
・実際は0にはならず、最低限のサイズになります。
はい。
ほぼ真ん中でまったく問題ありません。
私もほぼ真ん中にしか実際無理なんじゃないかと思っていたところです。
シンプルな方法でご教授いただきまして本当にありがとうございました^^
No.2
- 回答日時:
列幅のみ問題にしてみます。
エクセルでは列幅ColumnWidthは文字数で表されるらしいのですが、http://d.hatena.ne.jp/Nikki_A/20080104
これらとセルのLEFTなどの単位(ピクセル、ポイントなどの関係)の合わせ方が小生の力不足の苦手分野で、自信はありませんが、やってみました。
チェックボックスを動的に作成するのでなく、簡単のために手動で設けて、横位置のみ追求してみました。
チェックボックスの動的作成も、VBA程度では、あまり話題にしません。
チェックボックスの幅は、画面で見た目でなく、デザインモードでのハンドルの四角の横幅を問題にせざるを得ないです。チェックボックスのCattionの文字数で考えると、違ったものになります。
下記は結合セルの最左セルを問題(既定)にして、固定してます。
何処に(どの列に)結合セルがあるか不定の場合で捉えるのは、
http://officetanaka.net/excel/vba/tips/tips50.htmなど見てください。
結合セルのセル数は自動で捉えます。
このへんのコードは役立つかも。
Sub test01()
buf = 0
Set mcl = Worksheets("Sheet1").Range("C10")
If Range("C6").MergeCells Then
For Each cl In mcl.MergeArea
buf = buf + cl.ColumnWidth
MsgBox cl.Address
Next
MsgBox "結合セルセル合計文字数 " & buf & Application.InchesToPoints(buf)
z = buf * 72 / 8.38
x = mcl.Left
MsgBox mcl.Address & "セルLEFT " & Application.InchesToPoints(x)
y = Worksheets("Sheet1").CheckBox1.Width
MsgBox "チェックボックス幅 " & Application.InchesToPoints(y)
MsgBox (z - y) / 2
Worksheets("Sheet1").CheckBox1.Left = x + (z - y) / 2
'Application.InchesToPoints(Worksheets("Sheet1").CheckBox1.Width)) / 2
Else
MsgBox mcl.Address & "-->結合されていません" & vbCrLf
End If
End Sub
ーーーー
普通のやり方は、図形を捉える斜め矢印でチェックボックス群を捉え、図形の調整ー配置整列で(そしてVBAでやるならそのVBAマクロ記録などで知る)やるのではないでしょうか。質問は凝りすぎで、問題を難しくしているように思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 【VBA】写真の貼り付けコードがうまく機能しません。 5 2022/09/01 18:43
- Visual Basic(VBA) EXCEL VBAにて動的にCheckBOXを複数作成し、同BOXにイベントを追加したい 1 2023/03/16 07:05
- Visual Basic(VBA) 複数セルに〇印をつけるマクロ 4 2022/09/07 05:33
- その他(Microsoft Office) マクロVBAについて 1 2022/09/06 18:12
- Excel(エクセル) VBAで組み合わせ算出やCOUNTIFSの処理を高速化したいです。 4 2022/04/07 02:38
- Excel(エクセル) 日付で矢印マクロ 4 2023/07/25 16:47
- PowerPoint(パワーポイント) ExcelのVBAコードについて教えてください。 3 2022/05/25 14:32
- Visual Basic(VBA) 【VBA】写真の縦横比を変えずに貼り付ける 5 2023/06/13 11:42
- Excel(エクセル) エクセルで同じ数字同士を自動で線で結ぶVBAを教えてください 6 2022/04/26 23:13
- Excel(エクセル) VBA オリジナル関数で選択セルの合計を作成したい 3 2023/03/19 19:45
このQ&Aを見た人はこんなQ&Aも見ています
-
これまでで一番「情けなかったとき」はいつですか?
これまでの人生で一番「情けない」と感じていたときはいつですか? そこからどう変化していきましたか?
-
フォントについて教えてください!
みなさんの一番好きなフォントは何ですか? よく使うフォントやこのフォント好きだなあというものをぜひ教えてください!
-
これが怖いの自分だけ?というものありますか?
人によって怖いもの(恐怖症)ありませんか? 怖いものには、怖くなったきっかけやエピソードがあって聞いてみるとそんな感覚もあるのかと新しい発見があって面白いです。
-
この人頭いいなと思ったエピソード
一緒にいたときに「この人頭いいな」と思ったエピソードを教えてください
-
「黒歴史」教えて下さい
若気のいたりでやってしまったけれど、いまとなっては封印したい… そんなあなたの黒歴史を教えて下さい。
-
エクセルのエラーメッセージ「400」って?
Visual Basic(VBA)
-
選択したセル範囲に入っているチェックボックスを全てOFFにしたい
Excel(エクセル)
-
【VBA】シート上の複数のチェックボックスのうちどれか一つでも変更した場合のイベント
Visual Basic(VBA)
-
-
4
Worksheets メソッドは失敗しました。のエラー処理のやり方
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・「みんな教えて! 選手権!!」開催のお知らせ
- ・漫画をレンタルでお得に読める!
- ・「黒歴史」教えて下さい
- ・2024年においていきたいもの
- ・我が家のお雑煮スタイル、教えて下さい
- ・店員も客も斜め上を行くデパートの福袋
- ・食べられるかと思ったけど…ダメでした
- ・【大喜利】【投稿~12/28】こんなおせち料理は嫌だ
- ・前回の年越しの瞬間、何してた?
- ・【お題】マッチョ習字
- ・モテ期を経験した方いらっしゃいますか?
- ・一番最初にネットにつないだのはいつ?
- ・好きな人を振り向かせるためにしたこと
- ・【選手権お題その2】この漫画の2コマ目を考えてください
- ・2024年に成し遂げたこと
- ・3分あったら何をしますか?
- ・何歳が一番楽しかった?
- ・治せない「クセ」を教えてください
- ・【大喜利】【投稿~12/17】 ありそうだけど絶対に無いことわざ
- ・【選手権お題その1】これってもしかして自分だけかもしれないな…と思うあるあるを教えてください
- ・集合写真、どこに映る?
- ・自分の通っていた小学校のあるある
- ・フォントについて教えてください!
- ・これが怖いの自分だけ?というものありますか?
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・10代と話して驚いたこと
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
点在するセルを、ダブルクリッ...
-
Excelで指定した日付から過去の...
-
【VBA ・ エクセル】 テキスト...
-
Excel VBA、 別ブックの最終行...
-
ExcelVBAを使って、値...
-
DataGridViewのセル編集完了後...
-
Excel2003 複数セル1列の入力済...
-
【Excel】指定したセルの名前で...
-
エクセルVBAでコピーして順...
-
Excelのマクロについて
-
テキストボックスの値を該当セ...
-
Excel VBA マクロ ある列の最終...
-
VBA実行後に元のセルに戻りたい
-
連続する複数のセル値がすべて0...
-
マクロで行がグループ化されて...
-
i=cells(Rows.Count, 1)とi=cel...
-
VBAでマクロ実行中はExcelのマ...
-
エクセルvbaで、別シートの最下...
-
特定のセルが空白だったら、そ...
-
任意フォルダから画像をすべて...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ExcelVBAを使って、値...
-
Excelで指定した日付から過去の...
-
i=cells(Rows.Count, 1)とi=cel...
-
【Excel VBA】指定行以降をクリ...
-
特定のセルが空白だったら、そ...
-
VBA実行後に元のセルに戻りたい
-
”戻り値”が変化したときに、マ...
-
Excelのプルダウンで2列分の情...
-
連続する複数のセル値がすべて0...
-
vba 隣のセルに値がある行だけ...
-
エクセルvbaで、別シートの最下...
-
Excel vbaで特定の文字以外が入...
-
EXCELのVBA-フィルタ抽出後の...
-
特定の文字を条件に行挿入とそ...
-
【EXCEL VBA】Range("A:A").Fi...
-
【VBA】シート上の複数のチェッ...
-
DataGridViewの各セル幅を自由...
-
VBAでセル同士を比較して色付け
-
【VBA】指定したセルと同じ値で...
-
セル色なしの行一括削除
おすすめ情報