エクセルVBAで、シート上で結合されたセルに一つだけチェックボックスを作成したいです。
以前こちらの別の方の質問で、選択されているセルにチェックボックスを作成するプログラムが紹介されており、同じようにやってみたところ、セルが結合されていない場合は問題ないのですが、
セルが複数結合されている場合、結合されているセル分チェックボックスが出来てしまいます。
(例えば、エクセルのシート上で、A3セルからA6セルまでが結合されていた場合、合計4つチェックボックスが結合セル内に出来てしまいます)
結合セル内には一つしかチェックボックスを作りたくありません。
どうしたらよいでのしょうか?
以前紹介されていた、チェックボックスを作るプログラムは下記のようなものでした。
よろしくお願いいたします。
Sub sample()
Dim cb As CheckBox
For Each cb In ActiveSheet.CheckBoxes
cb.LinkedCell = cb.TopLeftCell.Address
Next cb
End Sub
No.2ベストアンサー
- 回答日時:
結合セルだった場合、左上のセルにだけチェックボックスを作成する……で良いのかな?
For Each ss In Selection の下に
If (ss.MergeArea.Column = ss.Column) * (ss.MergeArea.Row = ss.Row) Then
Next の上に
End If
を入れて見てください。
.MergeArea.Column、.MergeArea.row は各セルが属する結合セルの基準となる列と行(左上)を返します。
IF文でそのセルの列・行が結合セルの左上と一致した場合に処理を先に進めます。
また、そのセルが結合セルで無い場合は、左上セルの位置は列・行と同じ値になりますので、その場合も処理を先に進めます。
ありがとうございました。
無事結合セルの一番左上に1つだけチェックボックスを作成する事が出来ました。
本当に助かりました。
又何かわからない事があったらお世話になると思いますが宜しくお願い致します。
No.1
- 回答日時:
以前紹介されていたプログラムではなく、あなたが作った「セルが複数結合されている場合、結合されているセル分チェックボックスが出来てしま」うプログラムを提示しましょう。
この回答への補足
上記の書き込みは業務で使う為のものなので、会社から昼間に投稿しました。今帰宅しまして、手元にそのエクセルファイルがなく、尚且つ素人なので正確にはわかりかねるのですが、
Dim ss As Excel.Range, cbx As CheckBox
With Selection.Parent
For Each ss In Selection
Set cbx = .CheckBoxes.Add(Left:=ss.Left, Top:=ss.Top, _
Height:= 0,58, Width:= 0.82)
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(Trueにしたかも・・・)
.Line.Weight = 0.25 '線幅
.Line.ForeColor.RGB = RGB(0, 0, 0) '線色
End With
Next
End With
再度昼間私が会社で調べたサイトを調べ直し、こんな感じで会社のエクセルファイルのVBAに記載したであろうという内容を記載しました。
よって、多少違うところ(間違ってるところ)もあるかと思いますが、上記の感じです。
宜しくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルVBAでチェックボックスにチェックを入れる 1 2022/09/14 00:52
- Visual Basic(VBA) EXCEL VBAにて動的にCheckBOXを複数作成し、同BOXにイベントを追加したい 1 2023/03/16 07:05
- Visual Basic(VBA) 【VBA】写真の貼り付けコードがうまく機能しません。 5 2022/09/01 18:43
- Visual Basic(VBA) 複数セルに〇印をつけるマクロ 4 2022/09/07 05:33
- Excel(エクセル) 表内で、Enterキーで横→行の最後入力したら次の行の先頭に移動するマクロを作りたい 3 2022/05/01 21:19
- Visual Basic(VBA) VBAマクロでシートコピーした新シートにコピー元シートとの計算式の入れ方を教えて下さい。 5 2022/11/20 09:48
- Visual Basic(VBA) 列と行の名前(重複あり)が交差するセルに、データを入力したい 2 2022/06/25 22:42
- Excel(エクセル) 【エクセル】文中に別シートのセルの内容を自動入力したい 6 2022/11/17 11:30
- その他(Microsoft Office) エクセル VBAについて 2 2022/09/21 22:21
- Visual Basic(VBA) セルの値からファイルを複数作りたい2 3 2022/10/07 15:54
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBA ユーザーフォーム ボタンク...
-
screenupdatingが機能しなくて...
-
Excelで指定した日付から過去の...
-
特定のセルが空白だったら、そ...
-
i=cells(Rows.Count, 1)とi=cel...
-
ExcelVBAを使って、値...
-
Excelのハイパーリンクにマクロ...
-
スプレッドシートをGASでセル保...
-
【Excel】指定したセルの名前で...
-
エクセルvba:自己セルの情報取...
-
【VBA】指定したセルと同じ値で...
-
EXCELで変数をペーストしたい
-
エクセルVBA MATCHをユーザー...
-
RC表示に変数を入れる
-
エクセルマクロで結合セルに格...
-
VBAを使用した時間管理
-
vbsのセル値の取得について
-
EXCELのVBA-フィルタ抽出後の...
-
Sub 要具ライフ() ActiveSheet....
-
クリックされたセルの位置を取...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ExcelVBAを使って、値...
-
特定のセルが空白だったら、そ...
-
【Excel VBA】指定行以降をクリ...
-
i=cells(Rows.Count, 1)とi=cel...
-
【Excel】指定したセルの名前で...
-
Excelで指定した日付から過去の...
-
特定の文字を条件に行挿入とそ...
-
Excel VBA、 別ブックの最終行...
-
EXCELで変数をペーストしたい
-
Excelのプルダウンで2列分の情...
-
TODAY()で設定したセルの日付...
-
Excel vbaで特定の文字以外が入...
-
screenupdatingが機能しなくて...
-
DataGridViewの各セル幅を自由...
-
Sub 要具ライフ() ActiveSheet....
-
【EXCEL VBA】Range("A:A").Fi...
-
VBAを使用した時間管理
-
VBAでセルをクリックする回...
-
セル色なしの行一括削除
-
エクセルVBAでコピーして順...
おすすめ情報