• 締切済み

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

下記のような表を作っているんです・・・     A   B   C    D    1  日付  名前  評価   2  1日   あ   A   □ 3  2日   い   B   □ 4  2日   う   A   □ 5  4日   え   D   □ というような感じです(まだ右と下は項目いっぱいあります) Dのセルにチェックボックスをつけてチェックが入った物のみを別なシートにコピーしてそのページを印刷させ印刷し終わったら印刷した行の色を変えたいのです。 色々試してみたのですが、チェックボックスのON OFF判断もままならない状況でした;; どなたか宜しくお願いいたします。

  • nanny
  • お礼率55% (72/129)

みんなの回答

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.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 をいれると、この行を印刷します。 後は推測で、手直ししてください。

nanny
質問者

お礼

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

  • web2525
  • ベストアンサー率42% (1219/2850)
回答No.3

VBAでの処理ではなくマクロで同じ動作を行う方法を記録して、マクロの中身研究されては? 取りあえずチェックボックスとリンクするセルの指定はされていますか? リンクされたセルにはチェックを入れると[TRUE]が入りますので(チェックない場合は[FALSE]です)フィルターオプションでチェックされた行のみ抽出しコピペ&印刷&行の色変更、その後〔全て表示〕で希望の処理が終了するはずです。 マクロでの記録ではなくどうしてもVBAで一から組みたいと仰るのなら、そのマクロの内容を参考になされて自分なりに組み替えられては?

  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.2

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

  • aa109
  • ベストアンサー率11% (36/310)
回答No.1

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

関連するQ&A

  • エクセルVBAでのチェックボックス操作

    エクセルを利用した、VBAで困っています。 所定のsheetに埋め込まれたチェックボックスに対して、 別sheet内のセルの値を参照し、結果をオン、オフという 操作を行いたいのですが、チェックボックスに対するVBAでの指定方法 が分かりません。 イメージとしては (1)Sheet1内にチェックボックスがある。  該当チェックボックスは7個のチェックボックスで構成されており  それぞれにchb1~chb7といったオブジェクト名がある。 (2)sheet2のA1セルに特定の値が入っていればチェックボックス(chb1)  がオン値がなければオフのまま (3)sheet2のB1セルに特定の値が入っていればチェックボックス(chb2)  がオン値がなければオフのまま という感じです。 先方より指定された様式なのでsheet1の内容や書式を変更することが出来ないので、なんとか埋め込まれたオブジェクトを操作したいのですが・・・ 良い方法があれば教えてください。

  • エクセルのチェックボックス

    エクセルで作成した表  日付と品名とチェックボックスと金額が入ったセルがあります。    例  A           B        C 日付          金額   チェックボックスと金額 1999/12/1   1000   □  500 2000/10/1   2000   □  600 という風にデータが入った表を日付ごとに並べ替えをしようとすると チェックボックスのデータだけチェックマークがオンのデータをオフのデータが 並びかえがされず、困っています。 どうしたらいいのでしょうか?

  • EXCELのチェックボックスについて

    EXCEL2003を使用しています。 ■質問項目があり、回答する複数のセルにチェックボックスを配置してあります。 A列:質問 B列:回答のチェックボックス C列:回答のチェックボックス D列:回答のチェックボックス : Z列:OK 又は NGと表記したい。 ■各列の回答チェックボックスが全てonになっていたらOK、1つでもoffになっていたらNGと、Z列に表記させたいのですが、どのような式になりますか? ご回答の程、よろしくお願いいたします。

  • エクセルVBA チェックボックスについて

    VBA初心者です。 あるシート(セル)に作った入力用チェックボックスにチェック(TRUE)を入れたときに、別シートの特定の位置に楕円を引きたいのですが、どのようなやり方があるでしょうか。 使い方は入力用シートと印刷用シートを分けて、入力用シートのチェックボックスの状態で印刷用シートの特定のセルに選択したことがわかるように楕円をつけたいというものです。 よろしくお願いします。

  • チェックボックスのリンク先を変更したい

    2枚のシートがあります。 1枚のチェックボックスの状態を別シートのセルにリンクしています。 例えばこんな状態です↓ <シートA>   A     B  C 1 ON(B!C1) 001 イグチ 2 OFF(B!C2) 002 アオキ 3 ON(B!C3) 003 ウエダ ※ON/OFFはチェックボックスのことです。  ()内がリンクセルです。 <シートB>  A  B    C 1 001 イグチ TRUE 2 002 アオキ FALSE 3 003 ウエダ TRUE シートAは表示用のシートで実際のデータ操作はシートBを使います。 シートBで並び換えを行ってもシートAのチェックボックスのリンク先は 並び換え前から変わりません。 並び替え後のセルに自動的にリンク先が変わるようにするにはどのように設定すればよいのでしょうか? よろしくお願いします。

  • Excel VBA 条件を満たしたセル上にあるチェックボックス

    Excel2003を使用しています。 Sheet1のN4セルの値と同じ値が入力されているセルをSheet2のA列(A1:A50)から検索し、その行のB列に配置されているチェックボックスにチェックをつけたいのですが、そのチェックをつけたいチェックボックスを指定する方法がわかりません。 検索してヒットしたセルの1つ右隣のセルにチェックボックスが配置されているということで myNum = Sheets("Sheet1").Range("N4").Value Rng = Sheets("Sheet2").Range("A1:A50").Find(myNum) としたとして、Rng.Offset(, 1).Address と、チェックをつけたいチェックボックスの左上のセルアドレスを比較すればいいのかな?と思っているのですが、そのチェックボックスをどのようにしたら指定できるでしょうか? また、別の方法もありましたら、アドバイスをいただけると嬉しいです。 よろしくお願いします。

  • EXCEL VBA チェックボックスについて

    仕事上システムを作り始めたVBA初心者です。すみませんが、ご享受下さい。 ユーザーフォームにてチェックボックスを作成後、セルへ転載するものを作っております。 その中でチェックボックスが15個ほどあり、onの場合にはその行の25列目に"有"、OFFの場合は"無"と表示させたいのです。 現状はTRUEといった表示はされるところまではいったのですが、その先がどうしてもできません。 見よう見まねで始めた初心者ですので、コードもどこが必要かもあまりわからないのが現状です。お答え頂く上で必要であればアップしますので、よろしくお願い致します。尚、作ろうとしてるのはデータベースで設備項目に有、無をつける予定です。

  • チェックボックスにマクロを入れて印刷する

    チェックボックスにマクロを入れて印刷するやり方について ご教授いただきたく、質問させていただきます。 シート1   A   B   C    D 1  あ  ●  TRUE  レ 2  い  ×  FALSE 3  う  ▲  TRUE  レ エクセルで上記のシートA1,B1にデータを入力し、 Dにあるチェックボックスにチェックを入れると A1の「あ」をコピーし、シート2のX1にペーストして VLOOKUPを使ってシート1のB1をA1に表示させ、 印刷したいと思っています。 (もちろん、「あ」と「●」の2項目しかないわけではなく、 1行に8項目あり、シート1では横一列に並んでいるものを、 シート2の見栄えのいいフォーマットで、印刷します。 行数は100行くらいあります。) シート2     A      X  1  ●         あ マクロの記録で、「チェックを入れる→コピー→ペースト→印刷→シート1に戻る」とし、   Application.Run "Book1.xls!印刷" Range("A1").Select Selection.Copy Sheets("Sheet2").Select Range("X1").Select ActiveSheet.Paste Application.CutCopyMode = False ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True Sheets("元").Select となりましたが、チェックを入れても動作しなかったため、 「Application.Run "Book1.xls!印刷"」を削除したところ、 正常に動きました。 問題は・・・・    チェックを入れると動作する(^_^)    チェックを外す時も動作する(T_T)    1個のチェックボックスにマクロは設定できたけれど、    100行あったとしたら、100個のチェックボックスを作成し    1個1個マクロを記録させる?まとめてはできない?    チェックボックスをコピー&ペーストしたところ、    うまくいきませんでした。    (チェックを入れると印刷という動作でOKで、     チェックをあらかじめ入れておき、最後に印刷ボタンで     印刷するというやり方ではありません。     VLOOKUPを使っているので、無理ですよね(・_・;)) 初めてのチェックボックスですが、途中まで簡単にできた!と思ったけど、つまづいてしまいました。 色々調べたのですが、素人同然の私には難しくご質問させていただきました。 皆様お忙しいと思いますが、宜しくお願いいたします。                

  • エクセルでチェックボックスを使った関数。。。

    どなたかお助け下さい。。。 エクセルでチェックボックスを使った関数を作っています。 http://106.g-serve.net/kojin/555566666.gif 【2の行】のどれか一つにチェックを入れると【A2】に1の行の項目が反映されるようにしたいのですが、 例えば、【C2】にチェックを入れると【A2】に「交際費」と表示 各チェックボックスには「コントロールの書式設定」でリンクするセルは指定済みです。 とりあえず、A2には =IF(B2=FALSE,"",B1) まで書いたのですが。。。 手詰まりです@@; 各列のチェックボックスにはどれか1つチェックが入ります。 どうぞよろしくお願いいたします!

  • チェックボックスにチェックをいれることでセルに色をつけたい(エクセル)

    行方向(例えばA2、B2、C2)に三つの項目「実施」「不十分」「未実施」を 置き、それぞれの項目の下の列方向に、表示→フォームからもってきたチェックボックスを入れます。 3つの項目のうち1つにしかチェックをいれない条件で 「不十分」にチェックをいれたときその横のD列のセルが黄色、「未実施」 にチェックをいれたときその横のD列のセルが赤色になるようにマクロを 組みたいのですが、いろんなサイトをみながらトライしても上手くいき ません。 学習した上で質問すればいいのですがその場渡りの質問で申し訳ありません。よろしくお願いいたします。

専門家に質問してみよう