チェックボックスのControlSourceプロパティの値で数式を組むには?

Question 69.1 Previous Next
いつも参考にさせていただいております。行き詰まってしまったので教えてください。 チェックボックスとコマンドボタンを使って、数式の組み込みをしたいと思っています。
チェックボックスを選択し(複数)コマンドボタンを押すと、チェックボックスで設定されている(ControlSource)セル番地を数式に組み込む方法が知りたいのです。
しかも、チェックした箇所を絶対値としたいのです。 どう設定すればいいのでしょうか?
Answer   Copyright (C) 2004.8.31 永井善王
ご質問のポイントは 3つのようですが、ちょっと理解できないところがあるので、回答が的を得ていないかもしれません。

1. チェックボックスのControlSourceプロパティの値を取得する
右図のユーザーフォームを例にして解説します。
CheckBox1のControlSourceプロパティには A1、CheckBox2には B1、CheckBox3には C1 と設定してあります。
その値を取得するコードは下記のようになります。
    セル番地A = CheckBox1.ControlSource
    セル番地B = CheckBox2.ControlSource
    セル番地C = CheckBox3.ControlSource
2. 取得したセル番地を数式に組み込む方法
ご質問文では、どんな数式を組みたいのかが不明のため、単純に加算する式( =A1+B1+C1 )をチェックの有無に応じて組むことにすると、コードは下記のようになります。
    数式 = "="
    If CheckBox1.Value Then 数式 = 数式 & セル番地A
    If CheckBox2.Value Then
        If 数式 <> "=" Then 数式 = 数式 & "+"
        数式 = 数式 & セル番地B
    End If
    If CheckBox3.Value Then
        If 数式 <> "=" Then 数式 = 数式 & "+"
        数式 = 数式 & セル番地C
    End If
    If 数式 <> "=" Then
        MsgBox 数式
    Else                                        'どれもチェックされていない場合
        MsgBox "数式は成立しません"
    End If
3. 絶対値にする方法
ご質問文には「チェックした箇所を絶対値としたいのです」とありますので、上記 1.と 2.との関連で、あなたが何をしたいのか、アレコレ考えてみました。

まず、「絶対値」の定義は難解のようですが、単純に「正負の符号が付いていたら取り除きたい」と理解しておけばよろしいでしょうか? それでよろしければ、ABS関数で実現できます。 たとえば、=ABS(2)、=ABS(-2) はどちらも 2 を返してくれますし、C1セルに -2 が入っている場合に =ABS(C1) とすれば 2 が返ります。

しかし、このことと上記 1.と 2.がどう関係するのかが、どうしても理解できません。 大変申し訳ありませんが、よろしければ詳しくご連絡ください。

 

Excel VBA Macro