[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『チェックボックスにてチェックのみ表示』(しげ)
お世話になっています。(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.