[[20040203111848]] 『チェックボックスの使い方』(グッチー) ページの最後に飛ぶ

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

 

『チェックボックスの使い方』(グッチー)

A1のセルの横にチェックボックスを表示させチェックを付けた物を他のセルに
表示させる方法を教えて下さい。


 チェックを付けた物というのは、A1セルの値のことですか?

 チェックボックスは、コントロールツールボックスのもので構わないですか?

 チェックボックスは、全部で何個くらい使いますか?

  (INA)


 A1・A2・・・・・のセルの横にチェツクボックスを付けてチェツクを実行すると
 A1・A2・・・・・の値が他のセルに反映されるようにしたいんですが
   A         D   E
  1 リンゴ       リンゴ= 合計
  2 ミカン       ミカン= 合計
  3 バナナ       バナナ= 合計 
  4 リンゴ        ・  
  5 リンゴ        ・
  6 バナナ        ・
  7 バナナ
   ・
   ・
  上記のように表示したいんです 
 >チェックボックスは、コントロールツールボックスのもので構わないですか?

 構いません

 >チェックボックスは、全部で何個くらい使いますか?

 13個位です
 お願いします 

(グッチー)


 「表示」>「ツールバー」>「フォーム」のチェックボックスで説明します。
B1にチェックボックスを作り、右クリック「コントロールの書式設定」でコントロール
のタブの「リンクするセル」をB1にします。
E1に=IF(B1,COUNTIF($A$1:$A$13,A1),"")とします。
B1のフォントの色は白くしておけばTRUE、FALSEの文字が見えなくなります。
(ケン)


 ありがとうございました、できました。もう一つ聞きたいんですが
下記のようにした場合 A1からA10 C1からC10まで値が入力されています
BとDにチェツクボックスを作ります、値の多い順にEに名前F合計
を表示するようにしたいんですが、教えて下さい。

  A      B     C     D      E     F

  1 リンゴ      リンゴ       リンゴ      7 
  2 ミカン      バナナ            ミカン      6
  3 バナナ      ミカン            バナナ      6 
  4 リンゴ      ミカン            メロン      1  
  5 リンゴ      リンゴ  
  6 バナナ      バナナ  
  7 バナナ           ミカン
  8 リンゴ      リンゴ
  9 ミカン      バナナ
   10メロン      ミカン

(グッチー)


 すべて自動で、ですか?VBAの出番かなぁ?(ケン)


 出来れば自動で願いします。(グッチー)

 今の私は少々時間がかかりそうです。出来るとも限りません。VBAにたけた人が
いっぱいいます。お待ちください。(ケン)私も諦めた訳ではないです。

 チェックボックスをたくさん配置すると、かなり重たくなるけど
 13個くらいなら平気かな。
 軽くするときはダブルクリックイベントで、
 セルにレ点をON/OFFさせるという方法もあるけど・・

 いまちょっといそがしいので時間が空いたら考えてみます。
  (INA)

 今考えていたのですが、分からない所があります。
B列とD列にチェックを入れた物だけのカウントですか?
B1だけにチェックしたらリンゴは1ですか?(ケン)

 A1:D20にデータがあるとします。B1:B10、D1:D10には、各左側と右側のチェックボックスに
 対応する論理値がリンクしているものとしています。
 G1:G4に上からリンゴ、ミカン、バナナ、メロンとします。
 H1に=COUNT(IF(A$1:C$10=G1,IF(B$1:D$10,)))*100+ROW(A1)として、Ctrl+Shift+Enter。
 これをG4までフィルドラッグ。これらは、作業セルです。
 E1に=INDEX(G$1:G$4,MOD(LARGE(H$1:H$4,ROW(A1)),100))、
 F1に=INT(LARGE(H$1:H$4,ROW(A1))/100)。
 E1:F1をE4:F4までフィルドラッグ。ということでは、どうでしょう?
 同順は、下の行を大としています。                  (LOOKUP)


 項目自体をWクリックして色つけして判別させれば、
 B列、D列も要らなく出来るな・・・

  (INA)

 相変わらずLOOKUPさんの発想には驚かされます。

すごいな〜。

(ケン)

 有難う御座いました、イメージどうりの物ができました。
 参考に INAさんのやり方も教えて下さい。
 (グッチー)


 もう一つ質問なんですが、チエックが無いもの値が0の物は
 表示しないようにするには、どうすればいいか教えて下さい。
 (グッチー)

 G5に=COUNTIF(H1:H4,">100")。
 F1に=IF(ROW(A1)>G$5,"",INT(LARGE(H$1:H$4,ROW(A1))/100))、
 E1に=IF(F1="","",INDEX(G$1:G$4,MOD(LARGE(H$1:H$4,ROW(A1)),100)))。
 として、E1:F1をE4:F4までフィルドラッグです。  (LOOKUP)


 本当にありがとうございました。

 (グッチー)


 >参考に INAさんのやり方も教えて下さい。

 こんな感じです。必要であれば「並び替え」の処理を追加しても良いかと思います。

 1.ALT+F11キーで、VBEを起動
 2.プロジェクトウィンドウのSheet1 を Wクリック
 3.中央の真っ白なウィンドウ(コードウィンドウ)に以下のコードをコピペ

 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
 Dim myRange As Range
 Dim FindData As Range
 Dim c As Range

    Set myRange = Range("A1:A10,C1:C10")
    If Application.Intersect(Target, myRange) Is Nothing Then Exit Sub

        Cancel = True 'セル入力モード無効

        '色のON/OFF
        If Target.Interior.ColorIndex = 34 Then
            Target.Interior.ColorIndex = xlColorIndexNone
        Else
            Target.Interior.ColorIndex = 34
        End If

        '項目追加
        For Each c In myRange
            If c.Interior.ColorIndex <> xlColorIndexNone Then

                Set FindData = Range("E:E").Find(c.Value, LookIn:=xlValues, LookAt:=xlWhole)

                If FindData Is Nothing Then
                    If Range("E1").Value = "" Then
                        Range("E1").Value = c.Value
                    Else
                        Range("E65536").End(xlUp).Offset(1) = c.Value
                    End If
                End If
            End If
        Next c

        Range("F:F").ClearContents

        '色数カウント
        For Each c In myRange
            If c.Interior.ColorIndex <> xlColorIndexNone Then

                Set FindData = Range("E:E").Find(c.Value, LookIn:=xlValues, LookAt:=xlWhole)

                If Not FindData Is Nothing Then
                    FindData.Offset(0, 1).Value = FindData.Offset(0, 1).Value + 1
                End If
            End If
        Next c

        'カウント0の項目の削除
        For Each c In Range(Cells(1, 5), Cells(65536, 5).End(xlUp))
            If c.Value <> "" And c.Offset(0, 1).Value = 0 Then
                c.Resize(, 2).Delete Shift:=xlUp
            End If
        Next c

 End Sub

   (INA)

 INAさん有難う御座いました、
 話は戻りますが、LOOKUPさんに教えて頂いた方法で作成した、チェツクボックスに
 ボタン一つでチェツクを表示させたり、消したりする方法も教えて下さい!!
 (グッチー)

 なんということをおっしゃるのですか。もともと、そのようになっているでしょう? 
 テストは、どのようにされたのでしょう? 
    
 B1:B10、D1:D10の行高を広げ、フォームのチェックボックスを20個配置して、
 それぞれのコントロールの書式をクリックし、リンクするセルにB1:B10、D1:D10を
 指定してください。                                           (LOOKUP)

コメント返信:

[ 一覧(最新更新順) ]


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