advanced help
per page, with , order by , clip by
Results of 1 - 1 of about 978 for チェックボックス (0.008 sec.)
[[20081128174400]]
#score: 5499
@digest: 621ff333745a15287f82d86f8458fe8e
@id: 41067
@mdate: 2008-12-01T21:28:21Z
@size: 7259
@type: text/plain
#keywords: chknum (114558), setstr (49589), chkbx (42959), prefixstr (29993), 有□ (20721), checkbox (16992), checkbox3 (12172), checkbox2 (9493), checkboxes (7018), oleobjects (6660), クボ (6609), checkbox1 (5784), g0 (5184), enableevents (4189), チェ (3202), chk (2980), ェッ (2900), とd1 (2463), トロ (2274), 安定 (2180), ボッ (2083), 、d2 (1919), ック (1848), クス (1673), application (1635), ルツ (1492), ichinose (1239), ルボ (1188), click (1064), ロー (1055), コン (1052), コマ (916)
『空白にのみ文字を表示』(みかん)
できるのかどうかわかりませんが、教えて下さい(マクロは初心者です)。 WindowsXP,Excel2003を利用しています。 A B C D 1 □有 □無 X-X 2 □有 □無 3 □有 □無 □はチェックボックスです。 有のチェックボックスにチェックをつけるとD1、D2に文字が表示されるようにマクロで設定しています。 A1がチェックされたらX-X、B1だとY-Y、C1だとZ-Zが表示されるように設定してます。 3つすべてチェックが入ることはありませんが、2つ以下でチェックが入ることはあります(組み合わせ自由)。 どれか1つだけチェックしたのであればD1だけに、2つチェックをしたのであればD1、D2にそれぞれその文字を表示させたいです。 (例)A1、C1にチェックつけたらD1にX-X、D2にZ-Zと表示したい。) 上記のような設定は可能なのでしょうか? 宜しくお願い致します。 ---- 例には、A,B列にあるチェックボックスがC列にもあるということですか? それから、このチェックボックスは、コマンドバー「フォーム」のそれですか? それともコマンドバー「コントロールツールボックス」のそれですか? >有のチェックボックスにチェックをつけるとD1、D2に文字が表示されるようにマクロで設定しています。 >A1がチェックされたらX-X、B1だとY-Y、C1だとZ-Zが表示されるように設定してます。 でしたら、そのコードを提示してください。 と、記述の足りない点がいくつかあります。 ひとつのコード例です。新規ブックにて、試してみてください 標準モジュールに '================================================================================ Sub mk_chkbox() Dim g0 As Long Dim r As Range With ActiveSheet For g0 = 0 To 2 Set r = Cells(1, g0 + 1) With .CheckBoxes.Add(r.Left, r.Top, r.Width, r.Height) .Name = "Checkbox" & g0 .Caption = "Checkbox" & g0 .OnAction = "checkbox_chk" End With Next End With End Sub '================================================================================ Sub checkbox_chk() Dim g0 As Long, g1 As Long Dim chknum As Long Dim chkbx As CheckBox If TypeName(Application.Caller) = "String" Then With ActiveSheet Set chkbx = .CheckBoxes(Application.Caller) g0 = Replace(chkbx.Name, "Checkbox", "") g0 = g0 ¥ 3 chknum = 0 If chkbx.Value = xlOn Then For g1 = g0 * 3 To g0 * 3 + 2 If .CheckBoxes("Checkbox" & g1).Value = xlOn Then chknum = chknum + 1 End If Next If chknum >= 3 Then chkbx.Value = xlOff End If End If If chknum < 3 Then Range("d" & g0 + 1 & ":d" & g0 + 2).Value = "" ReDim setstr(g0 * 3 To g0 * 3 + 2) setstr(g0 * 3) = "x-x" setstr(g0 * 3 + 1) = "Y-Y" setstr(g0 * 3 + 2) = "Z-Z" chknum = 0 For g1 = g0 * 3 To g0 * 3 + 2 If .CheckBoxes("Checkbox" & g1).Value = xlOn Then Range("d" & chknum + 1).Value = setstr(g1) chknum = chknum + 1 End If Next End If End With End If End Sub これで、mk_chkboxを実行してみてください。 アクティブなシートのセルA1、B1、C1にチェックボックスが作成されます。 このチェックボックスにチェックを入れて動作を確認してみてください。 尚、コードは、コマンドバー「フォーム」のチェックボックスを採用しました。 ichinose ---- ichinoseさん 回答ありがとうございます。 チェックボックスはコントロールチェックボックスを使っています。 >有のチェックボックスにチェックをつけるとD1、D2に文字が表示されるように マクロで設定しています。 といいましたが、すみません、D1しか表示できるようにしか 設定していなかったです。 ↓今組んでいる設定です↓ ''------------------------------------------- Private Sub CheckBox1_Click() Application.EnableEvents = False If CheckBox1.Value = True Then Range("D1") = "x-x" Else Range("D1") = "" End If Application.EnableEvents = True End Sub ''-------------------------------------------- Private Sub CheckBox2_Click() Application.EnableEvents = False If CheckBox2.Value = True Then Range("D1") = "y-y" Else Range("D1") = "" End If Application.EnableEvents = True End Sub ''------------------------------------------- Private Sub CheckBox3_Click() Application.EnableEvents = False If CheckBox3.Value = True Then Range("D1") = "z-z" Else Range("D1") = "" End If Application.EnableEvents = True End Sub このコードでD2を設定するとD1、D2両方とも入力されて しまいますので使えないのかなとは思っています。 大変申し訳ございませんが、宜しくお願い致します。 (みかん) ---- 3個のチェックボックスのオブジェクト名を名前を CheckBox1、CheckBox2、CheckBox3 と命名されているとします。 当該シートモジュールに '============================================================ Private Sub CheckBox1_Click() Application.EnableEvents = False Call checkbox_chk(OLEObjects("CheckBox1"), "CheckBox") Application.EnableEvents = True End Sub ''-------------------------------------------- Private Sub CheckBox2_Click() Application.EnableEvents = False Call checkbox_chk(OLEObjects("CheckBox2"), "CheckBox") Application.EnableEvents = True End Sub ''------------------------------------------- Private Sub CheckBox3_Click() Application.EnableEvents = False Call checkbox_chk(OLEObjects("CheckBox3"), "CheckBox") Application.EnableEvents = True End Sub ''------------------------------------------------------------ Sub checkbox_chk(chkbx As OLEObject, prefixstr As Variant) Dim g0 As Long, g1 As Long Dim chknum As Long With ActiveSheet g0 = Replace(chkbx.Name, prefixstr, "") - 1 g0 = g0 ¥ 3 chknum = 0 If chkbx.Object.Value Then For g1 = g0 * 3 + 1 To g0 * 3 + 3 If .OLEObjects(prefixstr & g1).Object.Value Then chknum = chknum + 1 End If Next If chknum >= 3 Then chkbx.Object.Value = False End If End If If chknum < 3 Then Range("d" & g0 + 1 & ":d" & g0 + 2).Value = "" ReDim setstr(g0 * 3 + 1 To g0 * 3 + 3) setstr(g0 * 3 + 1) = "x-x" setstr(g0 * 3 + 2) = "Y-Y" setstr(g0 * 3 + 3) = "Z-Z" chknum = 0 For g1 = g0 * 3 + 1 To g0 * 3 + 3 If .OLEObjects(prefixstr & g1).Object.Value Then Range("d" & chknum + 1).Value = setstr(g1) chknum = chknum + 1 End If Next End If End With End Sub 一長一短は、ありますが、シート上に同一コントロールが多数あるときは、 コントロールツールボックスのコントロールより、フォームにあるExcelコントロールの方が 扱いが楽ですよ!! 安定性という面からもフォームにあるExcelコントロールのほうが安定していると 思います。 ichinose ...
http://www.excel.studio-kazu.jp/wiki/kazuwiki/200811/20081128174400.txt - [detail] - similar
PREV NEXT
Powered by Hyper Estraier 1.4.13, with 97012 documents and 608132 words.

訪問者:カウンタValid HTML 4.01 Transitional