自動印刷のため以下のようなマクロを書いてみました。
VBA
1Sub Printing() 2Dim print_start, print_end, counter As Integer 3print_start = InputBox("put the first page number") 4print_end = InputBox("put the last page number") 5For counter = print_start To print_end 6Cells(4, 2) = counter 7ActiveWindow.SelectedSheets.PrintOut Copies:=1 8Next 9End Sub
どのように直せばいいのでしょうか。
よろしくお願いします。
エラーが再現できません。が、回数分数字を変えて印刷でいいのですか?
やりたいことも合わせて書いて下さい。
どうもコメントありがとうございます。
はい、やりたいことは一人一人の個票を印刷していくものです。
エラーに関してなんですが、実行してみると上のようなエラーがでるときもあれば、デバックして
For counter = print_start To print_end
のところが黄色くなることもあります。
最近マクロの勉強を始めて、参考に先人のブログに貼り付けてあるコードをそのままコピペさせていただいたりするのですが、それでも結構エラーがでたりします(メモリが足りないやコンパイルエラーなど)。これはエクセルやパソコンに問題があるのかなと思ってしまいます。
メモリが足りないのはパソコンではなくエクセルの問題ですね。
回避の方法があるとは思いますが、状況を再現できないと、
代わりに原因を突き止めるということは難しくなります。
一人一人の個票と言われても解りません。
業務の用語ではなく、エクセルのシート上の説明をお願いします。
うー、初心者でどう説明していいかわからないのですが、エクセルで、vlook関数を使って、番号を打ち込むと、別シートのリストを参照して、その人のデータが表示されるものです。
すいません、調べてみたところ、おそらくmacのエクセルであることが原因の可能性がたかそうです。
どうもありがとうございました。
?
番号を打込むのは手動でやって、マクロの中でやってるのは、
始まりと終わりのページ番号のいみですか?
あと、複数シートは手動で選択しているのですか?
そちらが初心者かどうかで、僕の対応は変わりません。ただし、解決に向かうようアドバイスはしたいと思ってます。
まずは、エクセル君に仕事をしてもらうんじゃなくて、回答者に、
その仕事を手動でしてもらうつもりで、説明してください。
エクセルくん、なるほど。そうやってちゃんと説明することが大事なんですね。
作りたいマクロは、初めの番号と最後の番号を手入力すれば、その範囲のシートを自動で印刷してくれるものです。Cells(4,2)のところに印刷している番号がでるようにしました。「あと、複数シートは手動で選択しているのですか?」ということでしたが、これに関してはよく理解できていません。上で番号を入れれば、自動で1つずつ1が足されていくのかなと思ったのですが、もしや1+=のようなものをどこかに入れなければいけないのでしょうか。
ネットで調べていたら、ActiveWindow.SelectedSheets.PrintOut Copies:=1は、Macの場合はThisWorkbook.ActiveSheet.PrintOutにしないといけないというのを見つけました。ただそうやっても上と同じエラーがでました。
お時間をとっていただき感謝です。
>ActiveWindow.SelectedSheets
アクティブなシートの選択されたシート群(1つの場合も含む)という意味です。
なので、マクロ実行前に意図するシートを複数選択してあると読みましたが、
そういう事ではないのですね。
印刷したいのは、特定の決まったシート1つ。
で、
Cells(4, 2) = counter
とセルに数値を入力したら、
それによって、シート上の数式が再計算されて、
その結果を次々印刷したいといことですかね?
はい、シートは1つです。手動でやれば、セルの番号を変えれば、vlookupで別のシートにあるデータをもってきれくれて表示してくれるので、それを印刷するのですが、いちいち番号を変えることを自動でできたらなと。Cells(4,2)には、印刷されるシートの番号が表示されるようにしたつもりでした。
回答1件
あなたの回答
tips
プレビュー