アプリ版:「スタンプのみでお礼する」機能のリリースについて

チェックボックスにマクロを入れて印刷するやり方について
ご教授いただきたく、質問させていただきます。

シート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を使っているので、無理ですよね(・_・;))

初めてのチェックボックスですが、途中まで簡単にできた!と思ったけど、つまづいてしまいました。
色々調べたのですが、素人同然の私には難しくご質問させていただきました。

皆様お忙しいと思いますが、宜しくお願いいたします。
   
   
   

   

A 回答 (2件)

まず、チェックボックスの種類を明らかにしてください。



ワークシートでチェックボックスを使用する
http://www.serpress.co.jp/excel/vba029.html

>チェックを入れると動作する(^_^)
>チェックを外す時も動作する(T_T)
フォームのチェックボックスなら
MsgBox ActiveSheet.CheckBoxes(1).Value
とか
MsgBox ActiveSheet.DrawingObjects("Check Box 1").Value
でチェックの有無を取得できます。
チェックの有無が取得できたら、IF文で処理を分岐すればどうでしょうか。

>1個のチェックボックスにマクロは設定できたけれど、
>100行あったとしたら、100個のチェックボックスを作成し
>1個1個マクロを記録させる?まとめてはできない?
VBAで「マクロの登録」をすれば良いです。
OnActionプロパティを使います。
印刷マクロを汎用性のあるものにすることが前提条件です。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

フォームというのは、コントロールとフォームの事でしょうか?
用語とかあまり分からないのですみません。
とりあえず、コントロールチェックボックスを入れてます。

色々、検索してあんな方法、こんな方法と試してます。
明日はフォームのチェックボックスでも頑張ってみます。

教えていただいたことを元に、頑張ります。
ありがとうございました。

お礼日時:2009/11/11 23:01

質問一生懸命に書いているのだろうが判りにくい。


VBAの質問ですか?
>印刷
シート2が思い通り出来上がれば印刷は手動でもVBAでも簡単なので
質問の議題からはずすのが、ごたごたしたり、読者に誤解されない知恵。
>チェックボックスにマクロを入れて印刷する
こんな文章おかしい。チェックボックスにマクロコードなど書き込めない。
>シートA1,B1
はシート1のA1,B1セルでしょう。
==
これはチェックボックスがチェックされている行のみ印刷したい、という表現でよかろう。
印刷するその前にVLOOKUPでとあるが、チェックボックスのチェック有りの全列をSheet2に移す関数でのやり方があるので、VLOOKUP関数を考える必要がないと思う。
(1)ただし関数を使ってでは、絶対印刷そのものは出来ないから、印刷の部分はマクロの記録を採って勉強のこと。
チェックボックスのON/OFFは関数で使うには、セルの値に関連付けないとならないので、多数行があるとちょっと難しいが。
セルの値にリンクされたら、後はGoogleで「imogasi方式」で照会してもらえれば、条件に該当した行の、抜き出しの方式の様々な質問と回答が出る。
imogasi方式は作業列を1列使うが、比較的わかりやすいかな、と思っている。チェックの付いた行(値がTRUEの行)に、上行から連番を振ることを考える方式で、その行を別シートに間隔をあけず持ってくるやり方。
ーーー
多数行のあるシートにチェックボックスを各行に作るのは、VBAで例えば
Sub test01()
d = Range("A65536").End(xlUp).Row
MsgBox d
For i = 1 To d
With Worksheets("sheet1")
Set myCheckBox = .CheckBoxes.Add(Left:=Cells(i, "F").Left + 10, _
Top:=Cells(i, "F").Top + 1, Height:=20, Width:=40)

End With
myCheckBox.Caption = ""
myCheckBox.LinkedCell = "$E$" & i
Next i
End Sub
ーー
E列にリンクドセル、
F列にチェックボックス
データ行数だけチェックボックスを作る
例だが、質問者はそういう事を理解する技量はあるのか。
あるいは手動でシート上にチェックボックスを作り終わっているのかな。
ーー
チェックボックスをコピー貼り付けしてリンクドセルの番地は変わらないようなので、これを順次チェックボックスに各行のセルに設定するのは、手作業以外自動でやれる方法はあるのかな。なさそうだが。
ーー
チェックボックスを設けているのは、質問者以外がこのブックを使う前提のようだが、他人に使わせるシートの仕組みをVBAで作るのは、VBAの色々な技量が要ると思う(凝ったものになり、保護とかも考えないといけない、バックアップも必要など大変)。大丈夫かな。
ーーー
関数辺りでやるのをお勧めする。
    • good
    • 0
この回答へのお礼

質問がわかりづらくて申し訳ありませんでした。

私は素人同然と申し上げたうえで、質問させて頂いております。
用語もわかりませんし、「こんなことがしたい」とわからないなりの精一杯の説明です。

説明がわかりづらいのはそちらも同様。
わからない人間に「質問者はそういう事を理解する技量はあるのか。」
あなたにはできないでしょ的回答するのであれば、回答せずに通り過ぎるべきではないでしょうか。

ちなみにシートにチェックボックスを各行に作るVBAは回答を参考に完成しました。もちろん、自分の書式に書き換えてです。
根本的に知識不足で、問題外な質問者だと思いますが、、理解したい、完成したいという気持ちがあります。

お忙しい中、ご回答ありがとうございました。
色々調べて絶対に完成させようという気持ちになりました。

お礼日時:2009/11/11 23:16

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています