[[20180831094922]] 『開発のチェックボックスを使って』(事務まま) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『開発のチェックボックスを使って』(事務まま)

開発→挿入→フォームコントロール or ActiveXコントロール→チェックボックスを作成して
書類の有・無の識別をして有・無の結果を数字で表したい。(Bの1・2に結果が出るように)なりますか?

【例:有の場合】 ■はチェック済

    1    2
A   有■  無□

B    1   0

【例:無の場合】 ■はチェック済

    1    2
A   有□  無■

B    0   1

追記
そもそも、自分がフォームコントロール と ActiveXコントロールの違いもあまり分かっていません。
簡単に教えて頂ければ助かります。

< 使用 Excel:Excel2013、使用 OS:Windows10 >


チェックボックスは主に複数選択するときに使います。

今回のように二択しかないなら、
オプションボタンを使うか、
[書類有りの場合はチェック]などと書いた
チェックボックスが一つあれば十分だとおもいますよ。

 Private Sub CheckBox1_Click()
    If CheckBox1 = True Then
        Range("A2") = 1
        Range("B2") = 0
    Else
        Range("A2") = 0
        Range("B2") = 1
    End If
 End Sub

シートに配置するのがフォームコントロール、
ユーザーフォームに配置するのがActiveXコントロール
みたいな使い分けですね。

ActiveXコントロールもシートに配置できますが、、

このへんは[フォームコントロールとActiveXコントロールの違い]
とかで調べたらたくさん出てくると思いますよ!
(TAKA) 2018/08/31(金) 10:06


 作業セルを使ったらダメでしょうか?
 リンクするセルにTrue、false が入るから、そのセルを参照して
 =--(A1)
 とかですむし。

 ActiveXコントロールは、97の頃にMSが推奨していたんですが、
 重い、バグ多しなどで?、なぜか未だに95の頃の物(フォームコントロール)が残って使われてます。
 因みにMac版のoffice98は、ActiveXコントロールは無く、フォームコントロールです。(最近のは知らない。)
 まあ、未だに4.0マクロなんてのも残ってるし。
(BJ) 2018/08/31(金) 10:37

TAKAさん、BJさんありがとうございます。

ちょっと後で試してみます♪
(事務まま) 2018/08/31(金) 11:57


 追加

 ActiveXコントロールの利点の一つ
 シート、ブックの保護なしで、デザインモードにしなければオブジェクトが動かない。
 後は、思いつかない。
 後で試してみたら、2007だとフォームコントロールでも前より移動しづらくなってた。

 欠点は、ActiveXコントロールを選択した時と選択してない時の文字がくずれて?変わる。
 オートフィルタとの併用で、消えてなくなる時がある。
 (バグらしい?Updataで直っているのか、エクセルのバージョンで違うのか解らない。
  新しく作り直せば、消えないとも・・・。)

 VBA使用時、ActiveXコントロール上でフォーカスの綱渡りをするとアクティブセルのフォーカスを
 見失って、エラーになることがある。(2007以降では、試したことがない。)
(BJ) 2018/08/31(金) 12:12

TAKAさん

初歩的な質問で申し訳ないです。。。(オハズカシイ・・・)

 Private Sub CheckBox1_Click()
    If CheckBox1 = True Then
        Range("A2") = 1
        Range("B2") = 0
    Else
        Range("A2") = 0
        Range("B2") = 1
    End If
 End Sub

この式をどこにどのように入れるのでしょうか?
(;^_^A

(事務まま) 2018/08/31(金) 12:56


不親切ですみません、、

シートにActiveXコントロールのチェックボックスをひとつ配置したら、
そのチェックボックスをダブルクリックするとVBEが出てくるのでそこに書いてください
(TAKA) 2018/08/31(金) 13:06


^^書きました!

その後はどうしたら。。。? 笑
<(_ _)>
(事務まま) 2018/08/31(金) 13:41


書いたらあとは実際にクリックしてみてください^^
(TAKA) 2018/08/31(金) 13:53

 クリックする前に開発-コントロールのデザインモードをオフにしてくれ。
(ねむねむ) 2018/08/31(金) 13:57

すごい!
出来ました!
あまりの感動にシーンとしている事務所の中で「わっ!」と大きい声を出してしまいました 笑
(事務まま) 2018/08/31(金) 14:24

ちなみに、これって別シートでも実行できますか?

例えば、sheet1でチェックしたものが
sheet2のA1かA2に1or0表示される。
(事務まま) 2018/08/31(金) 14:30


    Private Sub CheckBox1_Click()
       With ThisWorkbook.Sheets("Sheet2")'←ここのシート名を替えればどこでもok
           If CheckBox1 = True Then
               .Range("A2") = 1
               .Range("B2") = 0
           Else
               .Range("A2") = 0
               .Range("B2") = 1
           End If
       End With
    End Sub

です。
(TAKA) 2018/08/31(金) 14:56


TAKAさん、ちょっと苦戦しております。。。
今これにてガンバッテいるのですが。

    Private Sub CheckBox1_Click()
       With ThisWorkbook.Sheets("date") '
           If 注文書あり = True Then
               .Range("EZ2") = 1
               .Range("FA2") = 0
           Else
               .Range("EZ2") = 0
               .Range("FA2") = 1
           End If
       End With
    End Sub

実際のActiveXコントロールのチェックボックスをチェックボックスオブジェクト→編集で
「注文書あり」に変更

これらをして、デザインモードオフにして、注文書ありにチェックを入れて実行してみると、ずっとFA2が1表示になってしまいます。
フォームもコードも「注文書あり」に変更しないで新規のチェックボックス作成のままで「CheckBox1」のままだとうまく表示されるのですが。。。

私の何がいけないの!? ( ノД`)

(事務まま) 2018/09/04(火) 17:15


 >チェックボックスオブジェクト→編集
 これで変更できるのは画面上での見出しでオブジェクト名はCheckBox1のままで変わらず。
 オブジェクト名を変更したいのであればデザインモードをオンにしてチェックボックスを
 選択した際に名前ボックスに表示されている部分を変更してみてくれ。
(ねむねむ) 2018/09/04(火) 17:22

あ!できた 笑
単純だったのですね。。。

ねむねむさんありがとう!
(事務まま) 2018/09/04(火) 17:38


もうちょっと突っ込んだ話をすると

「注文書なし」のチェックボックスをもうひとつ作って、

■あり □なし

これからの「なし」になった場合、自動で「あり」のチェックを外れるようにしたいのですが可能なのでしょうか?

VBEは「あり」のみに書いておけばOK?

以下理想
↓↓
■あり □なし

    Private Sub CheckBox1_Click()
       With ThisWorkbook.Sheets("date") '
           If CheckBox1 = True Then
               .Range("EZ2") = 1
               .Range("FA2") = 0
           Else
               .Range("EZ2") = 0
               .Range("FA2") = 1
           End If
       End With
    End Sub

sheet_date
   EZ2   FA2
1
2   1    

「なし」にチェック

□あり ■なし

「あり」が自動でチェック外れる・・・そして

sheet_date
   EZ2   FA2
1
2        1    

(事務まま) 2018/09/04(火) 18:00


再度失礼します。

もうちょっと突っ込んだ話をすると

「注文書なし」のチェックボックスをもうひとつ作って、

■あり □なし

これからの「なし」になった場合、自動で「あり」のチェックを外れるようにしたいのですが可能なのでしょうか?

VBEは「あり」のみに書いておけばOK?

以下理想
↓↓

 ■あり □なし 

    Private Sub CheckBox1_Click()
       With ThisWorkbook.Sheets("date") '
           If CheckBox1 = True Then
               .Range("EZ2") = 1
               .Range("FA2") = 0
           Else
               .Range("EZ2") = 0
               .Range("FA2") = 1
           End If
       End With
    End Sub

sheet_date
   EZ2   FA2

 1 
 2   1     

「なし」にチェック

□あり ■なし

「あり」が自動でチェック外れる・・・そして

sheet_date
   EZ2   FA2

 1 
 2        1     

(事務まま) 2018/09/05(水) 10:42


こんな感じですね、、

 Private Sub CheckBox1_Change()
       With ThisWorkbook.Sheets("date") '
           If CheckBox1 = True Then
                CheckBox2 = False
               .Range("EZ2") = 1
               .Range("FA2") = 0
           Else
                CheckBox2 = True
               .Range("EZ2") = 0
               .Range("FA2") = 1
           End If
       End With
 End Sub

 Private Sub CheckBox2_Change()
    If CheckBox2 = True Then
        CheckBox1 = False
    Else
        CheckBox1 = True
    End If
 End Sub

(TAKA) 2018/09/05(水) 10:58


この流れで言いづらいのですが、なぜラジオボタン(オプションボタン)の動きをチェックボックスで強引に実現しようとしているんだろう。

と思ったら一番最初にTAKAさんが紹介していますね。
なんのことか分からずスルーされていそうな気がしますが。

見た目が□ではなく○だからダメなのでしょうか・・?
コーディング不要なのでとても便利なのですが・・・。

開発>挿入>フォームコントロール>オプションボタンを複数置いてみて下さい。
何もプログラムを書かなくても多数の選択肢から1つを指定するように出来ます。

そしてオプションボタンを右クリックして「コントロールの書式設定」で、コントロールタブの「リンクするセル」に選択された数値を表示したいセルを指定しておけば、1〜nの数値として取得できます。

今回は複数の問があるようなので、開発>挿入>フォームコントロール>グループボックスで、オプションボタンを囲うように配置することでグルーピングすることが出来ます。
(※図形の移動ではグルーピング状態が自動で更新されません。適当な図形を置いたり削除することで更新されます)

補足:グループボックスを移動する時に中身が一緒に動いてくれないので、オブジェクトの選択、Ctrlキー、グループ化を使うなどして、まとめて動かしてあげて下さい。
(名無し) 2018/09/05(水) 11:31


すみませんでした。

私の発想がそもそも無知で無理なことだったんですね。

申し訳ないです、ありがとうございました。
<(_ _)>
(事務まま) 2018/09/05(水) 13:35


別に叱っているわけではありません。

オプションボタンという目的に合致するものがあるのですが、
試した気配がないので、一度試してはいかがですか?
という問いかけです。

仕組みとしては極々ありふれたものです。
だからこそ、ちゃんと用意されてます。

誰でも最初は知らない機能ばかりですから、紹介されたものはまず使ってみましょう。
(名無し) 2018/09/05(水) 14:03


TAKAさん、返信くれていたのですね。
TAKAさんにもご迷惑をお掛けしてます。

ちなみに、オプションボタンにした場合はActiveXコントロールにて、オプションボタンを選択し、TAKAさんに頂いた↓↓

 Private Sub CheckBox1_Change()
       With ThisWorkbook.Sheets("date") '
           If CheckBox1 = True Then
                CheckBox2 = False
               .Range("EZ2") = 1
               .Range("FA2") = 0
           Else
                CheckBox2 = True
               .Range("EZ2") = 0
               .Range("FA2") = 1
           End If
       End With
 End Sub

 Private Sub CheckBox2_Change()
    If CheckBox2 = True Then
        CheckBox1 = False
    Else
        CheckBox1 = True
    End If
 End Sub

このCheckBox1の部分をOptionButton1に変更すればよいのでしょうか。

(事務まま) 2018/09/05(水) 17:05


TAKA様のVBAはActiveXのチェックボックスを使って実現する場合の方法です。

混乱させて申し訳ございませんが、私の提案したフォームのオプションボタンを使う場合はマクロ自体が必要ありません。ポチポチ置いて行くだけです。

下記の部分でセルに対して数値を自動入力させることが出来るためです。
>そしてオプションボタンを右クリックして「コントロールの書式設定」で、
>コントロールタブの「リンクする>セル」に選択された数値を表示したいセルを指定しておけば、
>1〜nの数値として取得できます。
(名無し) 2018/09/05(水) 17:11


>そもそも、自分がフォームコントロール と ActiveXコントロールの違いもあまり分かっていません。

下記の場所に詳しい説明が記載されています。

https://www.239-programing.com/excel-vba/basic/basic101.html

(HO) 2018/09/05(水) 18:24


HOさんありがとうございます。
やっと理解できました 笑
私的にフォームコントロールは名前のごとくフォームのみかと思っていました。
セルとリンクするなんて思ってませんでした。

名無しさん度々すみません。
明日、職場にて実践してみたいと思います!

TAKAさんも度々すみません。
私が無知な為に、労力を使わせてしまいました。

みなさんほんと感謝です。
m(_ _)m
(事務まま) 2018/09/05(水) 20:17


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.