Page 36 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 通常モードに戻る ┃ INDEX ┃ ≪前へ │ 次へ≫ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ▼現在のシートの確認について ちょび 02/9/4(水) 15:29 ┗Re:現在のシートの確認について つん 02/9/4(水) 16:06 ┗Re:現在のシートの確認について ちょび 02/9/4(水) 16:41 ┣うーん(>_<) つん 02/9/4(水) 17:35 ┃ ┗Re:うーん(>_<) りん 02/9/4(水) 18:06 ┃ ┗Re:うーん(>_<) ちょび 02/9/5(木) 9:19 ┃ ┗Re:うーん(?_?) りん 02/9/5(木) 13:19 ┃ ┗Re:うーん(?_?) ちょび 02/9/5(木) 14:03 ┃ ┗ごめんなさーい! つん 02/9/5(木) 14:55 ┃ ┗Re:ごめんなさーい! ちょび 02/9/5(木) 15:06 ┗Re:現在のシートの確認について こうちゃん 02/9/5(木) 9:30 ┗Re:現在のシートの確認について ちょび 02/9/5(木) 9:43 ┗Re:現在のシートの確認について こうちゃん 02/9/5(木) 12:20 ┣Re:現在のシートの確認について つん 02/9/5(木) 12:46 ┃ ┗Re:現在のシートの確認について りん 02/9/5(木) 13:12 ┃ ┗たびたびごめん こうちゃん 02/9/5(木) 14:02 ┗新しい問題 ちょび 02/9/5(木) 12:49 ┗Re:新しい問題 つん 02/9/5(木) 13:01 ┗Re:新しい問題 ちょび 02/9/5(木) 14:17 ─────────────────────────────────────── ■題名 : 現在のシートの確認について ■名前 : ちょび ■日付 : 02/9/4(水) 15:29 -------------------------------------------------------------------------
はじめまして。 初歩的な質問だと思うのですが、教えてください。 ある計算を行い、条件によってaの場合はシートAで計算結果を表示、bの場合は シートBに結果を表示というようなものを作りました。 そして、結果のシートと同時にフォームを表示させて、「印刷1」、「印刷2」、 「保存」、「条件変更」などのボタンで続く作業を選択できるようにしました。 ここで「印刷1」とは結果のシートのみを印刷する。 「印刷2」は結果のシートとそれに関連する別のシートも併せて印刷する。というもの です。 「印刷1」はアクティブなシートを印刷させるので簡単にできたのですが、 「印刷2」は結果が表示されたシートが何であるかによって、併せて印刷するシートが 変わるので、ここがうまくできず悩んでいます。 結果のシートがAの場合印刷するシートがAとBとC、結果のシートがDの場合印刷 するシートはDとBとEとF・・・というものにしたいのです。 結果のシートにボタンをつけて、マクロをそれぞれ記入することも考えましたが、 フォームでまとめたいというのが希望です。 説明がわかりにくかったかもしれませんが、上記のようなことは可能でしょうか? 可能であるならば、どのように記述すればいいのでしょうか? どうかよろしくお願いいたします。 |
ちょび さん、はじめまして、こんにちは。 >「印刷1」はアクティブなシートを印刷させるので簡単にできたのですが、 >「印刷2」は結果が表示されたシートが何であるかによって、併せて印刷するシートが >変わるので、ここがうまくできず悩んでいます。 >結果のシートがAの場合印刷するシートがAとBとC、結果のシートがDの場合印刷 >するシートはDとBとEとF・・・というものにしたいのです。 えっと、「結果シート」がアクティブな状態なんですよね? だったら、こんな感じではどうでしょうか? Private Sub CommandButton1_Click() Select Case ActiveSheet.Name Case "A" ActiveSheet.PrintOut preview:=True Worksheets("B").PrintOut preview:=True Worksheets("C").PrintOut preview:=True Case "B" ActiveSheet.PrintOut preview:=True Worksheets("C").PrintOut preview:=True Worksheets("D").PrintOut preview:=True End Select End Sub いいやりかたかどうかわかんないけど、一度お試しくださいませ。 |
つんさん、早速回答いただきまして本当にありがとうございます。 さて、先ほど教えていただいた件についてもう少し質問させていただいても よろしいでしょうか? 問題のシートですが、それぞれを番号で整理しています。 条件はSheet111、Sheet112、Sheet113 計算はSheet121、Sheet122、Sheet123 結果はSheet131、Sheet132、Sheet133 といった具合です。 そこで、いただいた記述を下記のように変更してみたのですが 失敗してしまいました。 印刷してくれません・・・・ 下の「結果A」,「結果D」はシートの名前です。 Private Sub OutputButton2_Click() Select Case ActiveSheet.Name Case "結果A" ActiveSheet.PrintOut Copies:=1 Sheet111.PrintOut Copies:=1 Sheet121.PrintOut Copies:=1 Case "結果D" ActiveSheet.PrintOut Copies:=1 Sheet112.PrintOut Copies:=1 Sheet122.PrintOut Copies:=1 End Select End Sub 別のコマンドボタンでは、Sheet***.PrintOut Copies:=1という記述で 印刷できた経験があったので、これでいいかなと考えたのですが どこか間違っていたのでしょうか????? よろしくお願いいたします。m(_ _)m |
▼ちょび さん: >Private Sub OutputButton2_Click() > > Select Case ActiveSheet.Name > Case "結果A" > ActiveSheet.PrintOut Copies:=1 > Sheet111.PrintOut Copies:=1 > Sheet121.PrintOut Copies:=1 > Case "結果D" > ActiveSheet.PrintOut Copies:=1 > Sheet112.PrintOut Copies:=1 > Sheet122.PrintOut Copies:=1 > End Select > >End Sub > >別のコマンドボタンでは、Sheet***.PrintOut Copies:=1という記述で >印刷できた経験があったので、これでいいかなと考えたのですが >どこか間違っていたのでしょうか????? >よろしくお願いいたします。m(_ _)m シート名で指定してるんじゃないんですね・・・ こういう形でシートを指定するやりかたは初めてみました。 で、そのやりかたで簡単にテストしてみましたが、こちらでは上手く行ったようです。 (プレビューで確かめただけですけど) エラーが出るのですか?どういうエラーですか? それとも、ただ、印刷されないだけかしらん? ActiveSheetは印刷されますか? ずいぶんシートの数が多いようだけど、シートの構成に原因があるのかなあ? うーーーん、こういう場合の「種別」もわからん(>_<) |
ちょびさん、つんさん、こんにちわ。 >エラーが出るのですか?どういうエラーですか? >それとも、ただ、印刷されないだけかしらん? エラーではなくて、印刷しないというだけなら、 >>Private Sub OutputButton2_Click() >> >> Select Case ActiveSheet.Name >> Case "結果A" >> ActiveSheet.PrintOut Copies:=1 >> Sheet111.PrintOut Copies:=1 >> Sheet121.PrintOut Copies:=1 >> Case "結果D" >> ActiveSheet.PrintOut Copies:=1 >> Sheet112.PrintOut Copies:=1 >> Sheet122.PrintOut Copies:=1 Case Else MsgBox ActiveSheet.Name, vbInformation, "シート確認" >> End Select >> >>End Sub これで、メッセージがでたら印刷の対象外扱いになっています。 エラーになるのなら、エラーメッセージを書いたほうが回答を得やすいですよ。 |
つんさん、りんさんおはようございます。ちょびです。 せっかくアドバイスをいただいているのに、レスが遅くなってすみません。 >Private Sub OutputButton2_Click() > > Select Case ActiveSheet.Name > Case "結果A" > ActiveSheet.PrintOut Copies:=1 > Sheet111.PrintOut Copies:=1 > Sheet121.PrintOut Copies:=1 > Case "結果D" > ActiveSheet.PrintOut Copies:=1 > Sheet112.PrintOut Copies:=1 > Sheet122.PrintOut Copies:=1 > Case Else > MsgBox ActiveSheet.Name, vbInformation, "シート確認" > End Select > >End Sub > >これで、メッセージがでたら印刷の対象外扱いになっています。 >エラーになるのなら、エラーメッセージを書いたほうが回答を得やすいですよ。 こちらの方を記述してみました。 メッセージボックスが出てきました。 ということは、印刷の対象外扱いになっているということですよね。 そこで次のようにして見たらうまくできました。 Private Sub OutputButton2_Click() 'この次に以下を付け足しました。 UserForm○○○.Hide Select Case ActiveSheet.Name Case "結果A" ActiveSheet.PrintOut Copies:=1 Sheet111.PrintOut Copies:=1 Sheet121.PrintOut Copies:=1 Case "結果D" ActiveSheet.PrintOut Copies:=1 Sheet112.PrintOut Copies:=1 Sheet122.PrintOut Copies:=1 Case Else MsgBox ActiveSheet.Name, vbInformation, "シート確認" End Select 'フォームはもう一度出すことにしました。 UserForm○○○.Hide End Sub ワークシートがアクティブになっていなかったということでしょうか? これって、もしかしてEXCEL97だから????(^^ゞ とにかく無事解決しました。本当にありがとうございました。 |
ちょびさん、こんにちわ。 >> MsgBox ActiveSheet.Name, vbInformation, "シート確認" >> >メッセージボックスが出てきました。 >ということは、印刷の対象外扱いになっているということですよね。 メッセージが出たということは、ActiveSheetがあった(なかったらエラーで止まります)ので、メッセージボックスの中に表示された名前のシートが当時アクティブだったということです。何がアクティブだったのかを表示するようにしていたのですけど、はて。 >ワークシートがアクティブになっていなかったということでしょうか? >これって、もしかしてEXCEL97だから????(^^ゞ うちもXL97ですよ。 |
りんさんへ > メッセージが出たということは、ActiveSheetがあった(なかったらエラーで止まります)ので、メッセージボックスの中に表示された名前のシートが当時アクティブだったということです。何がアクティブだったのかを表示するようにしていたのですけど、はて。 つんさんにも教えていただいてわかった(たぶん?)のですが、フォームを表示させた ままだったので、シートにアクセスできなかったということのようです。 どうも、私はアクテイブという事とモーダル(っていうのかな?)を混乱していた ようです。 >>ワークシートがアクティブになっていなかったということでしょうか? >>これって、もしかしてEXCEL97だから????(^^ゞ この部分が私の勘違いですね。フォームがモーダルなのでワークシートに アクセスできない状態だったため、印刷もできなかったということになるのかな? |
ちょびさん、りんさん、どもども・・・ ごめんなさい。 わたくし、りんさんの(?_?)の書き込みを読みとばしていて、 また、ちゃんと自分で確かめずに、いい加減なことをちょびさんに言ってしまいました。 ちょびさんの書き込みを読んで、フォームが表示された時点で、シートがアクティブじゃなくなったので、印刷されなかったのだと頭の中だけで考えて、ちゃんと検証していませんでした。 私は、モードレスでフォームを表示して、アクティブシートを手動で切り替えてテストしていたので、それで上手く行ってたのだと思いこんでしまってました。 今、モーダル表示でテストしなおしてみたところ、上手く動作してしまいました。 もう一度原因を検証しなおされた方がいいかもしれません。 ちょびさん、混乱させるようなことになってしまってごめんね(T_T) 谷さーん!「お詫び」ってのも種別に入れてーーー(>_<) |
皆さんこんにちはm(_ _)m ▼つん さん: >今、モーダル表示でテストしなおしてみたところ、上手く動作してしまいました。 >もう一度原因を検証しなおされた方がいいかもしれません。 これって、どうしてうまくいっちゃったんでしょうね??? モーダルで、フォームのHideとShowの記述を入れないのに つんさんの実験では印刷できたと言うことでしょうか??? んんーーーー。私にはちと難解・・・・・ でも! とりあえず、私の問題は解決しているので全然気にしないで下さい。 といっても、この問題を解決されたい方もいらっしゃるかもしれませんね。 >ちょびさん、混乱させるようなことになってしまってごめんね(T_T) いえいえ、返って気を使っていただいてありがとうございます。 なんか中途半端な書込みですが・・・・・m(_ _)m |
みなさん、おはようございます。 横レスごめんなさいね^^; たとえばSheet111がシート名なら Worksheets("Sheet111").PrintOut Copies:=1 または111番目のシートということなら Sheet(111).PrintOut Copies:=1 のような記述ではどうでしょ? |
ちょびです。 たくさんの方からヒントをいただき、本当に感謝しています。 ▼こうちゃん さん: >たとえばSheet111がシート名なら > > Worksheets("Sheet111").PrintOut Copies:=1 > >または111番目のシートということなら > > Sheet(111).PrintOut Copies:=1 > >のような記述ではどうでしょ? これは、どちらでもうまく行くみたいです。 ただちょっとだけ違ってました。 > Sheet(111).PrintOut Copies:=1 これは Sheet111.PrintOut Copies:=1 と記述するのが正解みたいです。 EXCEL97だけかなぁ???(^^ゞ とにかく、今回の問題は無事解決しました。 みなさん、本当に本当にありがとうございました。 |
ちょび さん、こんにちは もうみてないかな? >>または111番目のシートということなら >> >> Sheet(111).PrintOut Copies:=1 >これは、どちらでもうまく行くみたいです。 >ただちょっとだけ違ってました。 > >> Sheet(111).PrintOut Copies:=1 私の前の解答に間違いがありました、正解は Sheets(111).PrintOut Copies:=1 です。 >これは > Sheet111.PrintOut Copies:=1 > >と記述するのが正解みたいです。 >EXCEL97だけかなぁ???(^^ゞ いえいえ、2000でも同じですね。 「Sheet111」というシート名なんですね。この書式は Worksheets("Sheet111").PrintOut Copies:=1 を略してある書式ですね^^; |
こうちゃんさん、こんにちは〜 ちょびさんじゃなくて、ごめんさーい >「Sheet111」というシート名なんですね。この書式は >Worksheets("Sheet111").PrintOut Copies:=1 >を略してある書式ですね^^; そうじゃないと思います。 「Sheet111」というシート名なら、Sheet111.PrintOut...という書き方はNGになると思う。 「Sheet111」っていうのは、VBEのエクスプローラにあるシートの・・なんていうんだろう?オブジェクト名?なのでは? インデックス番号とも違いますよね? Sheets(111).PrintOut Copies:=1 だと、インデックス番号での指定になりますよね。 シートの指定の仕方は、そうなると、3種類のやり方があるってことでしょうか? ・シート名で指定 ・インデックスで指定 ・ちょびさんのやりかたでの指定 私は、いつも「シート名」で指定するやり方ばかりなんですけど、 みなさんはどうなのかなー?いろいろ使い分けてたりするのでしょうか? |
つんさん、こうちゃんさん、こんにちわ。 >そうじゃないと思います。 >「Sheet111」というシート名なら、Sheet111.PrintOut...という書き方はNGになると思う。 >「Sheet111」っていうのは、VBEのエクスプローラにあるシートの・・なんていうんだろう?オブジェクト名?なのでは? オブジェクト名です。 Sub Test() With Workbooks.Add.Worksheets(1) .Range("A1").Value = "手動で閉じてね" .Name = "てすと" 'シート名変更 MsgBox .CodeName, vbInformation, .Name .Parent.Saved = True End With End Sub ↑これで違いがわかります。 |
りん さん、つんさん そですね、オブジェクト名ですね。 勘違いしておりました^^; |
ちょびです。 ▼こうちゃん さん: >ちょび さん、こんにちは >もうみてないかな? いえいえ、ちゃんと見させていただいてます。(^^ゞ >「Sheet111」というシート名なんですね。この書式は >Worksheets("Sheet111").PrintOut Copies:=1 >を略してある書式ですね^^; そういうことになるんですね。(無知だー) 確かに、今確認したらプロパティウインドウでは オブジェクト名が、Sheet111になっていました。 ところで、新たに質問ができてしまいました。 解決できた記述の中でちょっとつけたしたいのですが・・ > Case "結果A" > ActiveSheet.PrintOut Copies:=1 > Sheet111.PrintOut Copies:=1 > Sheet121.PrintOut Copies:=1 たとえば上のSheet111を2ページ目だけ印刷させる場合はどのように 書けばいいんでしょうか? ご存知でしたら教えていただけますか? マニュアル本によるとFrom/Toを使うとはありましたが 実際の記述例がなく、いろいろ試したのですが、どうもうまくできないのです。 よろしくお願いいたしますm(_ _)m |
ちょび さん、こんにちは〜 >>「Sheet111」というシート名なんですね。この書式は >>Worksheets("Sheet111").PrintOut Copies:=1 >>を略してある書式ですね^^; >そういうことになるんですね。(無知だー) >確かに、今確認したらプロパティウインドウでは >オブジェクト名が、Sheet111になっていました。 いや、ちょっと違うようです。 こうちゃんさんの書き込みにレス入れたので、読んでみてちょ。 >たとえば上のSheet111を2ページ目だけ印刷させる場合はどのように >書けばいいんでしょうか? Sheet111.PrintOut from:=2, to:=2, Copies:=1 こんな感じでOKだと思います。 |
つんさん、ありがとうございますぅ・・・ >いや、ちょっと違うようです。 >こうちゃんさんの書き込みにレス入れたので、読んでみてちょ。 読みましたよー。 オブジェクト名とNameとさらにインデックス番号っていうのがあるんですねーーー。 知らなかった。 >私は、いつも「シート名」で指定するやり方ばかりなんですけど、 >みなさんはどうなのかなー?いろいろ使い分けてたりするのでしょうか? にゃはは。私だけかもしれません。 シート名で指定っていうのが確かにわかりやすいのかもしれないのですが 私の場合のシート名が、漢字名+数字とか漢字名+アルファベットなので 数字やアルファベットの部分を半角と全角で混乱してしまうことが 多いんです。 というわけで今回は数字の桁と番号で100の位は条件、10の位は計算方法、 1の位は結果・・・・みたいな具合に振り分けて見たということなんです。 ただ、このやり方ではシートの番号(オブジェクト名)を毎回エクスプローラで 確認しなければ忘れてしまうので、あまり賢いやり方とは言えないようです。(^_^;) >>たとえば上のSheet111を2ページ目だけ印刷させる場合はどのように >>書けばいいんでしょうか? > > Sheet111.PrintOut from:=2, to:=2, Copies:=1 これで、ばっちりです。\(^o^)/ 解決しました。 カンマ(,)を入れるって事がわかんなかったんですよ。 助かりました。 ありがとうございましたm(_ _)m |