• ベストアンサー

EXCELで自動的にチェックボックスの追加

って可能でしょうか。 イメージとしてはA列にデータが入力されたら、B列にチェックボックスを自動的に追加し、選択できるようにし、あとはVBAが対象レコードを処理するみたいな感じです。 お願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんにちは。 >あとはVBAが対象レコードを処理するみたいな感じです。 うーん、伝わってこないです。「対象レコードを処理するみたいな感じ」というのは、どういう意味でしょうか?ごめんなさい。私は、こういう表現が良く分からないのです。マクロの呼び出しでしょうか? 以下のようにすれば、入力すれば、チェックボックスが追加できます。 一応、簡単な、フォーム側にしてありますが、コントロールツール側(OLEObject ->基本的にはマクロのみの処理になる)ものも出来ます。位置は、一応、B列の同じ行の真ん中のつもりなのですが、チェックボックスの幅が、真ん中よりわずか右よりにさせます。 Int(Target.Width / 2) の部分で調整してください。例:その括弧「)」の後に、-2 などを入れる。「+(プラス)」が右、「-(マイナス)」が左 コントロールツール側は、調整は必要ないような気がしますが、キャプションを削除しても、イベント領域が、白でくり抜かれます。Excel2003では、ワークシート上では、フォーム側のほうが、出来上がりはきれいです。(たぶん、印刷すれば、変わらないはずです)。ただし、フォームのツールは旧バージョンのものですから、将来性が保証できません。 '------------------------------------------------------------ 'シートモジュール Private Sub Worksheet_Change(ByVal Target As Range)  Dim obj As Object  If Target.Column <> 1 Then Exit Sub 'A列指定  If IsEmpty(Target.Value) Then Exit Sub '値入力指定  If Target.Count > 1 Then Exit Sub '複数セル除外  For Each obj In Me.CheckBoxes  '既にB列にある場合は除外  If Not Intersect(obj.TopLeftCell, Target) Is Nothing Then Exit Sub  Next obj  With Me.CheckBoxes.Add(Target.Offset(, 1).Left + Int(Target.Width / 2), Target.Top, Target.Width, Target.Height)   .Caption = ""   .Visible = True '通常なくても良いが、繰り返しに必要  End With End Sub

その他の回答 (1)

  • marbin
  • ベストアンサー率27% (636/2290)
回答No.1

フォームのチェックボックスをシートに配置する 作業をマクロの自動記録したらコードが取れま した。 あとは配置場所をセルのTop、Leftで調整するコード を付加するだけです。 マクロの記録中にリンクするセルを設定するのも忘 れずに。 コードが出来たら、 シートモジュールのチェンジイベント用に改造しま しょう。 TargetのColumnが1だったら、というので条件分岐 すればいいように思います。

関連するQ&A