[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『開発のチェックボックスを使って』(事務まま)
開発→挿入→フォームコントロール 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
ちょっと後で試してみます♪
(事務まま) 2018/08/31(金) 11:57
追加
ActiveXコントロールの利点の一つ シート、ブックの保護なしで、デザインモードにしなければオブジェクトが動かない。 後は、思いつかない。 後で試してみたら、2007だとフォームコントロールでも前より移動しづらくなってた。
欠点は、ActiveXコントロールを選択した時と選択してない時の文字がくずれて?変わる。 オートフィルタとの併用で、消えてなくなる時がある。 (バグらしい?Updataで直っているのか、エクセルのバージョンで違うのか解らない。 新しく作り直せば、消えないとも・・・。)
VBA使用時、ActiveXコントロール上でフォーカスの綱渡りをするとアクティブセルのフォーカスを 見失って、エラーになることがある。(2007以降では、試したことがない。) (BJ) 2018/08/31(金) 12:12
初歩的な質問で申し訳ないです。。。(オハズカシイ・・・)
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
クリックする前に開発-コントロールのデザインモードをオフにしてくれ。 (ねむねむ) 2018/08/31(金) 13:57
例えば、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
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
ちなみに、オプションボタンにした場合は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
混乱させて申し訳ございませんが、私の提案したフォームのオプションボタンを使う場合はマクロ自体が必要ありません。ポチポチ置いて行くだけです。
下記の部分でセルに対して数値を自動入力させることが出来るためです。
>そしてオプションボタンを右クリックして「コントロールの書式設定」で、
>コントロールタブの「リンクする>セル」に選択された数値を表示したいセルを指定しておけば、
>1〜nの数値として取得できます。
(名無し) 2018/09/05(水) 17:11
下記の場所に詳しい説明が記載されています。
https://www.239-programing.com/excel-vba/basic/basic101.html
(HO) 2018/09/05(水) 18:24
名無しさん度々すみません。
明日、職場にて実践してみたいと思います!
TAKAさんも度々すみません。
私が無知な為に、労力を使わせてしまいました。
みなさんほんと感謝です。
m(_ _)m
(事務まま) 2018/09/05(水) 20:17
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.