[[20130206102609]] 『チェックボックスにてチェックのみ表示』(しげ) ページの最後に飛ぶ

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

 

『チェックボックスにてチェックのみ表示』(しげ)

 お世話になっています。(XP、Excel2003)

 こちらで頂いたマクロを利用しています。(マクロは素人です)

 質問
 ・Sheet1にあるチェックボックスでチェックしたボックスのみ「本文・概要」という
  シート名の「H39」のセルにに表示したいのですが、どこをいじればいいのでしょうか?

 ・チェックボックスは19個あるのですが、単に「CheckBox4」の後ろにCheckBox5・・・19を
  付け加えればいいのでしょうか?

   Sub Sample()
    Dim ckBox As Variant
    Dim i As Long

    Sheets("本文・概要").Columns("a").ClearContents

    For Each ckBox In Array("CheckBox1", "CheckBox2", "CheckBox3", "CheckBox4")
        With Me.OLEObjects(ckBox).Object
            If .Value Then
                i = i + 1
                Sheets("本文・概要").Cells(i, "a").Value = .Caption
            End If
        End With
    Next

 End Sub

 Private Sub CheckBox1_Click()
    Sample
 End Sub

 Private Sub CheckBox2_Click()
    Sample
 End Sub

 Private Sub CheckBox3_Click()
    Sample
 End Sub

Private Sub CheckBox4_Click()

    Sample
End Sub

 よろしくお願いします。

 >シート名の「H39」のセルにに表示したいのですが、どこをいじればいいのでしょうか?

 現在のコードは 1行目から順番にA列に転記しているけど、それを、選ばれたチェックボックスのキャプションを
 全て H39 にいれたいということ?
 その場合、H39のセル内で改行するのかな?

 >単に「CheckBox4」の後ろにCheckBox5・・・19を付け加えればいいのでしょうか?

 現在のコードのまま、A列に順番に転記するとしたら、【いいのでしょうか?】と悩む前に
 実際に追加して動かして試してみよう。それでいいのか悪いのか、すぐにわかるよ。

 (ぶらっと)

 (ぶらっと)さん、回答ありがとうございます。

 説明不足ですみませんでした。
 チェックボックは一つチェックするとH39のセルに表示され、二個目をチェックするとH40のセルに
 表示したいのですが。(チェックした分、下に表示されていく)

 すみません、そうですね。CheckBox5・・・19は試してみます。

 (しげ)

 現在は i が初期値 0 。(Dim で規定した段階で初期値の 0 になっている)
 で、セットは 

 i = i + 1
 Sheets("本文・概要").Cells(i, "a").Value = .Caption

 だから 最初は Cells(1, "A") 次が Cells(2, "A") その次が Cells(3, "A") ・・・・・
 だね。

 それを A1 からじゃなく H39 から ということなんだから、

 まず、マクロの最初のほうで i = 38 を記述して、
 Sheets("本文・概要").Cells(i, "a").Value = .Caption の "A" を"H"に変えればいいよね。

 ところで、(しげ)さんって、(しょう)さん??

 追記)処理前の転記領域のクリア、元コードはA1からだったので
    Sheets("本文・概要").Columns("a").ClearContents
    でよかったけど、ここを "A"->"H" にするとH1〜H38もクリアされる。
    それでいいならいいんだけどね。

 (ぶらっと)

 (ぶらっと)さん、返信ありがとうございます。

 いえ、(しょう)さんではないですが、、(しょう)さんの過去ログを見て、
 似たような状況だったので、参考にしました。
 このマクロは(ぶらっと)さんが作ったマクロだったんですね(^^;)

 下のようにしたのですが、「実行時エラー1004」結合されたセルの一部を変更することはできません。」
 となり、Sheets("本文・概要").Columns("H").ClearContentsが黄色くなってしまいますが。

 Sub Sample()
    Dim ckBox As Variant
    Dim i As Long

    Sheets("本文・概要").Columns("H").ClearContents

    For Each ckBox In Array("CheckBox1", "CheckBox2", "CheckBox3", "CheckBox4")
        With Me.OLEObjects(ckBox).Object
            If .Value Then
                i = 38
                Sheets("本文・概要").Cells(i, "H").Value = .Caption
            End If
        End With
    Next

 End Sub

 Private Sub CheckBox1_Click()
    Sample
 End Sub

 Private Sub CheckBox2_Click()
    Sample
 End Sub

 Private Sub CheckBox3_Click()
    Sample
 End Sub

 Private Sub CheckBox4_Click()
    Sample
 End Sub

 どうしてでしょうか?

 >どうしてでしょうか?

 結合セルだから。
 で、H列は結合セルだったの? どこからどこまで結合セルが存在するの?(何行目から何行目まで)

 ところで参照したトピ、
[[20130124100045]] 『チェックボックスをチェックした項目のみ表示』(しょう)

 ここで、(しょう)さんが最後のレスで気がついたことを忘れずにね。
 対象のチェックボックスに対して、それぞれ CheckBox●_Click が必要だよ。

 (ぶらっと)

 Sheet「本文・概要」のH列の他の行(1〜38行の所々)では結合セルはあるのですが、
 39〜85行(チェックボックスにて表示したいエリア)には結合セルはなく、86行以降はまた所々あります。
 他行(他列も?)の結合セルが悪さしているということですか?

 対象のチェックボックスにはCheckBox●_Clickがあります。(今はCheckBox4までしか試してないですが)

 (しげ)

 H列の結合セルを解除したところH38に表示がでました。
 H列に結合セルがあっても可能な方法ってあるのですか?

 (しげ)

 >39〜85行(チェックボックスにて表示したいエリア)には結合セルはなく

 ということは、チェックボックスは47個以上は作らないということだね。
 じゃぁ、簡単に、

 Sheets("本文・概要").Columns("H").ClearContents

 これを

 Sheets("本文・概要").Range("H39:H85").ClearContents

 にしてしまおう。

 (ぶらっと)

 (ぶらっと)さん、できました。ありがとうございます、ほんとうに助かりました。

 (しげ)

コメント返信:

[ 一覧(最新更新順) ]


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