|
|
| Excel VBA Macro ・ チェックボックス・コントロール ・ FAQ |
|
チェックボックスのControlSourceプロパティの値で数式を組むには?
|
|
|
|
Question 69.1 |
|
 |
 |
|
|
いつも参考にさせていただいております。行き詰まってしまったので教えてください。 チェックボックスとコマンドボタンを使って、数式の組み込みをしたいと思っています。
チェックボックスを選択し(複数)コマンドボタンを押すと、チェックボックスで設定されている(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.がどう関係するのかが、どうしても理解できません。 大変申し訳ありませんが、よろしければ詳しくご連絡ください。
|
|
|
|
| |
|
|