No.2ベストアンサー
- 回答日時:
こんにちは
チェックボックスは、セルと独立した関係にあるので、どのチェックボックスがどの行にあるのか決められてはいません。
通常は、チェックボックスのチェック状態をセルと連動させておいて、それを参照して利用すると思います。
この方法であれば、ご質問の内容は関数でも実現できそうに思われます。
また、チェックボックスと一口に言っても、フォームコントロールのチェックボックスとActiveXのものと2種類あって、VBAでの扱いが微妙に変わります。
そのあたりの情報が何もないので、見た目の位置関係から調べるという少々回りくどい方法で処理してみました。
(普通は、上述のようにセルとの連動を利用すると思います)
Sub Sample()
Dim c As Range, cbx As Object
Dim rw As Long
Dim t As Single, h As Single, w As Single
Dim y As Single, v As Boolean, f As Boolean
For rw = 6 To 15
Set c = Cells(rw, 1)
t = c.Top
h = t + c.Height
w = c.Width
f = False
' Form Control
For Each cbx In ActiveSheet.CheckBoxes
y = cbx.Top + cbx.Height / 2
If t < y And y < h And cbx.Left < w Then
f = True
If cbx.Value = xlOn Then v = True Else v = False
Exit For
End If
Next cbx
' ActiveX Control
If Not f Then
For Each cbx In ActiveSheet.OLEObjects
If TypeName(cbx.Object) = "CheckBox" Then
y = cbx.Top + cbx.Height / 2
If t < y And y < h And cbx.Left < w Then
f = True
v = cbx.Object.Value
Exit For
End If
End If
Next cbx
End If
If f And v Then
Cells(rw, 3).Resize(, 3).ClearContents
Cells(rw, 16).Resize(, 2).ClearContents
End If
Next rw
End Sub
No.3
- 回答日時:
まず、チェックボックは、Placement プロパティでセルと関連づきます。
しかし、手動でつけたものは、位置が不揃いなので、機械的に修正する必要があります。
ただ、以下は、A列以外の場所にCheckBoxがあれば、このマクロは誤動作します。
その場合は、ご相談ください。
なお、ActiveX コントロールには対応しませんし、おすすめしません。ActiveXコントロールは使用制限があるし、それ自身がトラブルを起こすこともあるからです。
''//両方とも、標準モジュールです。
''一回きりの機能の取り付けマクロ
Sub AddFeatureToCheckBoxes()
'CheckBox の位置の修正と、マクロの取り付け
Dim Chk As CheckBox
Dim i As Long
i = 6 '6行目から
With ActiveSheet
For Each Chk In .CheckBoxes
Chk.OnAction = "DelRowMacro"
Chk.Top = .Cells(i, 1).Top + 0.1
Chk.TopLeftCell = .Cells(i, 1)
Chk.Placement = xlMove 'セルと共に移動する
i = i + 1
Next
End With
End Sub
'CheckBox に取り付けたマクロ(統一マクロ)単独では動きません。
Sub DelRowMacro()
Dim ChkName As Variant
Dim Cb As CheckBox
Dim rw As Long
With ActiveSheet
ChkName = Application.Caller
If VarType(ChkName) <> vbString Then Exit Sub
Set Cb = .CheckBoxes(ChkName)
If Cb.Value = xlOn Then
rw = Cb.TopLeftCell.Row
.Cells(rw, 3).Resize(, 3).ClearContents 'Cから3列
.Cells(rw, 16).Resize(, 2).ClearContents 'Pから2列
End If
End With
End Sub
No.1
- 回答日時:
次のurlを参考にしてチェックボックスを作成してください。
http://www.becoolusers.com/excel/checkbox.html
まずA6にチェックボックスを作成します。
作成したチェックボックスを右クリックして、マクロの登録をクリックします。
新規作成ボタンを押すと、VisualBasicが起動します。
それを次のように編集してください。(Subの名前は、微妙に違うかもしれません。)
Sub チェック1_Click()
If ActiveSheet.CheckBoxes(Application.Caller) = xlOn Then
[C6:E6, P6:Q6].ClearContents
End If
End Sub
残りのセルも同様に作成してください。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(Microsoft Office) IF関数について教えてください 2 2022/05/10 13:31
- Excel(エクセル) EXCEL関数(数式)を教えてください 2 2022/06/08 18:32
- Excel(エクセル) Excel表示形式 2 2022/09/09 09:57
- Excel(エクセル) 表示形式、文字列セル(列)に数式を入力するには マクロ 1 2022/09/18 10:53
- Excel(エクセル) エクセルで、 A1セルに「A」という値、 B1セルに「B」という値が入っています。 どちらも表示形式 5 2023/02/22 23:05
- Excel(エクセル) ある範囲のセルに何を入力すると、別のセルに○を表示させる 3 2022/04/05 15:51
- Excel(エクセル) Excelのマクロで、特定のセルから順番に値を取得したい 5 2022/12/06 15:34
- 経済学 今期の消費量をC1、来期の消費量をC2、消費者の効用関数をu=5 (C1)^6(C2)^4とする。 2 2023/01/29 10:07
- Excel(エクセル) Excelの空文字判定について 7 2023/01/06 13:25
- Excel(エクセル) 条件付き書式の設定方法を教えて下さい。 2 2023/04/14 18:12
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
EXCELで特定のセルに表示...
-
太字に設定されているセルの個...
-
Excelで挿入した図をセルの中央...
-
Excel内での検索結果をシート...
-
エクセル 数字をすべて○などの...
-
エクセルでの検索ボックスの作...
-
【EXCEL】先週の月曜日の日付を...
-
アポストロフィーの一括挿入 ...
-
フォントの色を指定して削除出...
-
シート保護とグループ化機能を...
-
Excel ハイパーリンクのURLを別...
-
Excelで、図形内の文字をセルに...
-
excelで セルの移動時に...
-
マクロを実行すると画像がズレ...
-
クリックすると文章が表示され...
-
空白セルを空セルに置き換える...
-
VBA 見つからなかった時の処理
-
現在のセルの位置を返す関数は...
-
エクセル 未入力セルがあると...
-
Excel2007 色のカウント (VBA)
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
EXCELで特定のセルに表示...
-
エクセル 数字をすべて○などの...
-
Excel内での検索結果をシート...
-
クリックすると文章が表示され...
-
Excelでセルをクリックす...
-
太字に設定されているセルの個...
-
Excel ハイパーリンクのURLを別...
-
Excelで、図形内の文字をセルに...
-
マクロを実行すると画像がズレ...
-
現在のセルの位置を返す関数は...
-
Excelで挿入した図をセルの中央...
-
フォントの色を指定して削除出...
-
VBA 見つからなかった時の処理
-
エクセルでの検索ボックスの作...
-
エクセル 未入力セルがあると...
-
Excel2007 色のカウント (VBA)
-
エクセルでPDFリンクを大量...
-
【EXCEL】先週の月曜日の日付を...
-
EXCELのセルや文字色の反映
-
セルがクリックされた回数をカ...
おすすめ情報