[[20110505202314]] 『チェックボタンとコマンドボタンを併用した表の複』(マシンリーダー) ページの最後に飛ぶ

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

 

『チェックボタンとコマンドボタンを併用した表の複写とプリント出力は?』(マシンリーダー)

 過去のログを検索してもよく分からなかったので質問します。
 先ずは、私が作成中のワークシートについて説明します。

 以下のような縦項目別にした作業記録表があります。

   A      B      C      D      E      F     G     H     I     J     
 1 項目1 データ データ データ データ データ   |チェックボタン|
 2 項目2 データ データ データ…          |コマンドボタン|
 3 項目3 データ データ…              |印刷用ボタン |
 以下50行まで続く

 作業記録は、表1枚では足りない場合があり、数枚に及ぶこともあるので、
 表の右側に、チェックボタンとコマンドボタンとプリント出力用コマンドボタンを付けました。

 表を追加したい時は、チェックボタンにレ点を付けた時のみ、コマンドボタンをクリックすると、
 A1:F50の下に50行の表が複写され、複写先の表(A51:F100)が画面左上にきて、カーソルもA51にフリッカーします
 (但し、A51:F100 の表は複写されますが、画面左上に表示できていません)。

 追加の表は、2枚目で足りる場合とそうでない場合があるので、
 同様のチェックボタンとコマンドボタン、プリント出力用コマンドボタンを予め、
 1枚目の表の右側と同様、2枚目の右横にも付けました
 (これも、もっと簡略化できたらいいと考えます)。

 チェックボタンとコマンドボタンの二重スイッチにした理由は、プリンター出力したい時、
 チェックボタンがONになっている場合、複数枚の表があると判別し、印刷範囲指定を広げるためとしました
 (これもまだ未完成です)。

 そこで、質問します。
 チェックボタンとコマンドボタン併用したマクロ記述についてです。

 @チェックボタンONとコマンドボタンのクリックで、A1:F50の表は複写されますが、
  画面左上に来なく、表の途中になるので、画面左上に来るようにするにはどうしたらいいですか?
 A1枚の表の時のプリンター出力はできますが、複数枚の時のプリンター出力はどうしたらいいですか?
 Bチェックボタンやコマンドボタンの使い方では、
 私の考えている以外に、もっと簡単にできる方法があるような気がしますが解りません。
 もし、ありましたらご教授願います。

 2003,2007,xp

マシンリーダー


 >画面左上に来なく、表の途中になるので、画面左上に来るようにする
 Application.goto range("a51"), true 
 これを調べてみてください。
 >1枚の表の時のプリンター出力はできますが、複数枚の時のプリンター出力

 現状、問題にしているシートを印刷するのではなく、印刷用シートを別に設けます。

 印刷用シートをどのように使うかですが・・・・。

 1 項目行とデータのみ移行し、印刷用シート側のページ設定(シートタブ)で
    行のタイトルで項目行を指定し、枠線にチェック入れる。これで印刷。
    簡易な表を印刷してくれます。

 2 印刷用シートに1ページ分の印刷レイアウトを作成し、
     VBAにて、1ページ分のデータを差し込み印刷、その後、
     1ページ分のデータを差し込み印刷をデータ分繰り返す。

 3 印刷用シートにデータ印刷に足りるだけ印刷レイアウトをコピーし、
     データを差込み、印刷。

 2,3の違いは、データを1ページ分だけ差し込んで印刷する を繰り返すか
 データを全て差し込んでから印刷するかの違いです。

 3の方法は、印刷プレビューで全体が見ることが出来ます。
 アルゴリズムは、2の方が簡単でした、私の場合は・・・。

 後は、印刷をワードに任せる(ワードの差込印刷)方法もありますが、
 VBAからだとワードの仕様が変わったりすると大変な場合もあります。

 >チェックボタンやコマンドボタンの使い方
 データ列に必須入力項目などがあるとデータ数は簡単に把握できると思います。

 ichinose
 

ichinoseさま、

 ご指導ありがとうございます。
 まず、 Application.goto range("a51"), true ですが、
 完璧にできました。他にジャンプボタンも作ったのですが、
 これにも応用が利いて、綺麗に移動でき嬉しいです。

 次に、複数の作業用紙を印刷する件ですが、
 ご指導内容を読みながら考えました。
 コマンドボタンは使わず、予め必要な枚数分の作業表を縦に4枚作成しておき、
 チェックボタンがチェックしてあるところまでの表を印刷するように変えよう、と。

 1枚の作業表のみの場合は、表右横のチェックボタンをONにして、1枚分の印刷。
 2枚の作業表の場合は、1枚目と2枚目の表右横のチェックボタンをONにして、2枚分の印刷。
 3枚の作業表の場合は、1枚目から3枚目の表右横のチェックボタンを全てONにして、3枚分の印刷。
 4枚の作業表の場合は、1枚目から4枚目の表右横のチェックボタンを全てONにして、4枚分の印刷。

 このほうが、無理なくわざと難しくしなくてもよいと考えました。
 申し訳ありませんが、チェックボタンがONの時の印刷範囲を変えるだけのマクロをご指導願えませんか?

マシンリーダー


 チェックボックスのステータスは CheckBox1.Value のようにして取れますから、
 If 文でこれを判定して
 ActiveSheet.PageSetup.PrintArea = "$A$1:$J$50"
 のように設定したらできないでしょうか。

 印刷範囲の設定などはマクロの記録で簡単にコードが取れますし、ネットで検索しても例は
 多数ありますので、それらも活用したらどうかと思います。
 (Mook)

Mookさま、

 回答ありがとうございます。
 ご指摘の通り、マクロキー記録でも簡単にできますが、
 チェクボックスの判定を、IF文で作成する文法的な面が解らず、伺ってしまいました。

 >チェックボックスのステータスは CheckBox1.Value のようにして取れますから、
 >If 文でこれを判定して
 >ActiveSheet.PageSetup.PrintArea = "$A$1:$J$50"
 試してみます。

 ありがとうございました。

マシンリーダー


コメント返信:

[ 一覧(最新更新順) ]


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