こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

エクセルVBA チェックボックスで;;

下記のような表を作っているんです・・・


    A   B   C    D   

1  日付  名前  評価  
2  1日   あ   A   □
3  2日   い   B   □
4  2日   う   A   □
5  4日   え   D   □

というような感じです(まだ右と下は項目いっぱいあります)

Dのセルにチェックボックスをつけてチェックが入った物のみを別なシートにコピーしてそのページを印刷させ印刷し終わったら印刷した行の色を変えたいのです。

色々試してみたのですが、チェックボックスのON OFF判断もままならない状況でした;;

どなたか宜しくお願いいたします。

投稿日時 - 2004-08-16 11:18:56

QNo.963669

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(4)

ANo.4

間違っているかも知れませんが、このチェックボックスを
各行に関連付ける方法は、難しい面を抱えていると思います。
(1)チェックボックス集団をどれでもチェックすると反応してくれるイベントがない。
かつその集合の中でどれかを知らせてくれないといけない
がそれもない。
(2)VBAではコントロール配列が使えない。
20行あるとして、チェックボックスの数だけイベントのコードを書けば出来るのでしょうが、やりたくない。
(3)コントロールのグループ化も出来るが使えなさそう。
(4)#2でも出ている、LinkedCellを各チェックボックスに設定してみたが、シートのChangeイベントやSelectionChangeイベントに反応
しなかった。
(例データ)
(2)の解決はあきらめて、泥臭くやって見ました。
チェックボックス4つの例です。
Sheet3のA1:C5に
日付 名前 評価  
2004/8/1山本A
2004/8/2木村B
2004/8/2吉井B
2004/8/3近藤C
D列のD2、D3、D4、D5にCheckBox1、2、3、4をそれぞれ貼りつけ。
E2はワークセルで使う。
(コード)
Private Sub CheckBox1_Click()
Cells(2, 5) = 1
End Sub
Private Sub CheckBox2_Click()
Cells(2, 5) = 2
End Sub
Private Sub CheckBox3_Click()
Cells(2, 5) = 3
End Sub
Private Sub CheckBox4_Click()
Cells(2, 5) = 4
End Sub
--------
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$E$2" Then
i = Worksheets("sheet3").Cells(2, 5)
' MsgBox i
Worksheets("sheet2").Cells(10, "A") = Worksheets("sheet3").Cells(i + 1, "A")
Worksheets("sheet2").Cells(10, "B") = Worksheets("sheet3").Cells(i + 1, "B")
Worksheets("sheet2").Cells(10, "C") = Worksheets("sheet3").Cells(i + 1, "c")
Worksheets("sheet3").Range(Cells(i + 1, "A"), Cells(i + 1, "C")).Interior.ColorIndex = 6
End If
End Sub
Sheet3でCheckBox1をクリックすると
Sheet2のA10が
2004/8/3近藤C
となり、Sheet3のA2:C2が黄色になる。
Cells(i + 1, "C")).Interior.ColorIndex = 6
の下に
Worksheets("sheet3").Range(Cells(i + 1, "A"), Cells(i + 1, "C")).Interior.ColorIndex = 6
の下に
Worksheets("sheet2").Range(Cells(10, "A"), Cells(10, "C")).PrintOut
をいれると、この行を印刷します。
後は推測で、手直ししてください。

投稿日時 - 2004-08-16 13:44:18

お礼

そうですか・・・ なかなか厳しい感じですね・・・;;

上記を参考にさせていただき、もうちょっとがんばってみます。
泥臭くやるのは、得意なので^^
というか泥臭くしか作れないので^^がんばってみます
ありがとうございました

投稿日時 - 2004-08-16 13:55:09

ANo.3

VBAでの処理ではなくマクロで同じ動作を行う方法を記録して、マクロの中身研究されては?

取りあえずチェックボックスとリンクするセルの指定はされていますか?
リンクされたセルにはチェックを入れると[TRUE]が入りますので(チェックない場合は[FALSE]です)フィルターオプションでチェックされた行のみ抽出しコピペ&印刷&行の色変更、その後〔全て表示〕で希望の処理が終了するはずです。

マクロでの記録ではなくどうしてもVBAで一から組みたいと仰るのなら、そのマクロの内容を参考になされて自分なりに組み替えられては?

投稿日時 - 2004-08-16 11:51:16

ANo.2

コントロールツールボックスのCheckBoxだと、簡単なのはプロパティのLinkedCellを「D1」のようにセルアドレスで指定してそれを見るって感じでしょうか。

投稿日時 - 2004-08-16 11:51:04

ANo.1

ワタシだったら
下記のようにします
SelectionChangeイベントを利用して
Activecells.value=”v”
で選択セルにチェック、
印刷する時には
オートフィルターでチェックがある行を抽出し
色をつけます
そして印刷・・

投稿日時 - 2004-08-16 11:50:03

あなたにオススメの質問