プロが教える店舗&オフィスのセキュリティ対策術

って可能でしょうか。

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

お願いします。

A 回答 (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
    • good
    • 3

フォームのチェックボックスをシートに配置する


作業をマクロの自動記録したらコードが取れま
した。

あとは配置場所をセルのTop、Leftで調整するコード
を付加するだけです。

マクロの記録中にリンクするセルを設定するのも忘
れずに。

コードが出来たら、

シートモジュールのチェンジイベント用に改造しま
しょう。

TargetのColumnが1だったら、というので条件分岐
すればいいように思います。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています