過去ログ

                                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・・・というものにしたいのです。

結果のシートにボタンをつけて、マクロをそれぞれ記入することも考えましたが、
フォームでまとめたいというのが希望です。

説明がわかりにくかったかもしれませんが、上記のようなことは可能でしょうか?
可能であるならば、どのように記述すればいいのでしょうか?

どうかよろしくお願いいたします。
 ───────────────────────────────────────  ■題名 : Re:現在のシートの確認について  ■名前 : つん <honey@sweetparty.ne.jp>  ■日付 : 02/9/4(水) 16:06  -------------------------------------------------------------------------
   ちょび さん、はじめまして、こんにちは。

>「印刷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

いいやりかたかどうかわかんないけど、一度お試しくださいませ。
 ───────────────────────────────────────  ■題名 : Re:現在のシートの確認について  ■名前 : ちょび  ■日付 : 02/9/4(水) 16:41  -------------------------------------------------------------------------
   つんさん、早速回答いただきまして本当にありがとうございます。
さて、先ほど教えていただいた件についてもう少し質問させていただいても
よろしいでしょうか?

問題のシートですが、それぞれを番号で整理しています。
条件は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
 ───────────────────────────────────────  ■題名 : うーん(>_<)  ■名前 : つん <honey@sweetparty.ne.jp>  ■日付 : 02/9/4(水) 17:35  -------------------------------------------------------------------------
   ▼ちょび さん:

>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は印刷されますか?
ずいぶんシートの数が多いようだけど、シートの構成に原因があるのかなあ?

うーーーん、こういう場合の「種別」もわからん(>_<)
 ───────────────────────────────────────  ■題名 : Re:うーん(>_<)  ■名前 : りん <rin_doggie@hotmail.com>  ■日付 : 02/9/4(水) 18:06  -------------------------------------------------------------------------
   ちょびさん、つんさん、こんにちわ。

>エラーが出るのですか?どういうエラーですか?
>それとも、ただ、印刷されないだけかしらん?

エラーではなくて、印刷しないというだけなら、

>>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

これで、メッセージがでたら印刷の対象外扱いになっています。
エラーになるのなら、エラーメッセージを書いたほうが回答を得やすいですよ。
 ───────────────────────────────────────  ■題名 : Re:うーん(>_<)  ■名前 : ちょび  ■日付 : 02/9/5(木) 9:19  -------------------------------------------------------------------------
   つんさん、りんさんおはようございます。ちょびです。
せっかくアドバイスをいただいているのに、レスが遅くなってすみません。

>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だから????(^^ゞ

とにかく無事解決しました。本当にありがとうございました。
 ───────────────────────────────────────  ■題名 : Re:うーん(?_?)  ■名前 : りん <rin_doggie@hotmail.com>  ■日付 : 02/9/5(木) 13:19  -------------------------------------------------------------------------
   ちょびさん、こんにちわ。

>>       MsgBox ActiveSheet.Name, vbInformation, "シート確認"
>>
>メッセージボックスが出てきました。
>ということは、印刷の対象外扱いになっているということですよね。
 
 メッセージが出たということは、ActiveSheetがあった(なかったらエラーで止まります)ので、メッセージボックスの中に表示された名前のシートが当時アクティブだったということです。何がアクティブだったのかを表示するようにしていたのですけど、はて。

>ワークシートがアクティブになっていなかったということでしょうか?
>これって、もしかしてEXCEL97だから????(^^ゞ
うちもXL97ですよ。
 ───────────────────────────────────────  ■題名 : Re:うーん(?_?)  ■名前 : ちょび  ■日付 : 02/9/5(木) 14:03  -------------------------------------------------------------------------
   りんさんへ
> メッセージが出たということは、ActiveSheetがあった(なかったらエラーで止まります)ので、メッセージボックスの中に表示された名前のシートが当時アクティブだったということです。何がアクティブだったのかを表示するようにしていたのですけど、はて。

つんさんにも教えていただいてわかった(たぶん?)のですが、フォームを表示させた
ままだったので、シートにアクセスできなかったということのようです。
どうも、私はアクテイブという事とモーダル(っていうのかな?)を混乱していた
ようです。

>>ワークシートがアクティブになっていなかったということでしょうか?
>>これって、もしかしてEXCEL97だから????(^^ゞ

この部分が私の勘違いですね。フォームがモーダルなのでワークシートに
アクセスできない状態だったため、印刷もできなかったということになるのかな?
 ───────────────────────────────────────  ■題名 : ごめんなさーい!  ■名前 : つん <honey@sweetparty.ne.jp>  ■日付 : 02/9/5(木) 14:55  -------------------------------------------------------------------------
   ちょびさん、りんさん、どもども・・・
ごめんなさい。

わたくし、りんさんの(?_?)の書き込みを読みとばしていて、
また、ちゃんと自分で確かめずに、いい加減なことをちょびさんに言ってしまいました。

ちょびさんの書き込みを読んで、フォームが表示された時点で、シートがアクティブじゃなくなったので、印刷されなかったのだと頭の中だけで考えて、ちゃんと検証していませんでした。

私は、モードレスでフォームを表示して、アクティブシートを手動で切り替えてテストしていたので、それで上手く行ってたのだと思いこんでしまってました。

今、モーダル表示でテストしなおしてみたところ、上手く動作してしまいました。
もう一度原因を検証しなおされた方がいいかもしれません。

ちょびさん、混乱させるようなことになってしまってごめんね(T_T)

谷さーん!「お詫び」ってのも種別に入れてーーー(>_<)
 ───────────────────────────────────────  ■題名 : Re:ごめんなさーい!  ■名前 : ちょび  ■日付 : 02/9/5(木) 15:06  -------------------------------------------------------------------------
   皆さんこんにちはm(_ _)m

▼つん さん:
>今、モーダル表示でテストしなおしてみたところ、上手く動作してしまいました。
>もう一度原因を検証しなおされた方がいいかもしれません。

これって、どうしてうまくいっちゃったんでしょうね???
モーダルで、フォームのHideとShowの記述を入れないのに
つんさんの実験では印刷できたと言うことでしょうか???

んんーーーー。私にはちと難解・・・・・
でも!
とりあえず、私の問題は解決しているので全然気にしないで下さい。
といっても、この問題を解決されたい方もいらっしゃるかもしれませんね。

>ちょびさん、混乱させるようなことになってしまってごめんね(T_T)

いえいえ、返って気を使っていただいてありがとうございます。
なんか中途半端な書込みですが・・・・・m(_ _)m
 ───────────────────────────────────────  ■題名 : Re:現在のシートの確認について  ■名前 : こうちゃん <nakajima19@hotmail.com>  ■日付 : 02/9/5(木) 9:30  -------------------------------------------------------------------------
   みなさん、おはようございます。

横レスごめんなさいね^^;

たとえばSheet111がシート名なら

  Worksheets("Sheet111").PrintOut Copies:=1

または111番目のシートということなら
      
  Sheet(111).PrintOut Copies:=1

のような記述ではどうでしょ?
 ───────────────────────────────────────  ■題名 : Re:現在のシートの確認について  ■名前 : ちょび  ■日付 : 02/9/5(木) 9:43  -------------------------------------------------------------------------
   ちょびです。
たくさんの方からヒントをいただき、本当に感謝しています。

▼こうちゃん さん:
>たとえばSheet111がシート名なら
>
>  Worksheets("Sheet111").PrintOut Copies:=1
>
>または111番目のシートということなら
>      
>  Sheet(111).PrintOut Copies:=1
>
>のような記述ではどうでしょ?

これは、どちらでもうまく行くみたいです。
ただちょっとだけ違ってました。

>  Sheet(111).PrintOut Copies:=1

これは
   Sheet111.PrintOut Copies:=1

と記述するのが正解みたいです。
EXCEL97だけかなぁ???(^^ゞ


とにかく、今回の問題は無事解決しました。
みなさん、本当に本当にありがとうございました。
 ───────────────────────────────────────  ■題名 : Re:現在のシートの確認について  ■名前 : こうちゃん <nakajima19@hotmail.com>  ■日付 : 02/9/5(木) 12:20  -------------------------------------------------------------------------
   ちょび さん、こんにちは
もうみてないかな?

>>または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
を略してある書式ですね^^;
 ───────────────────────────────────────  ■題名 : Re:現在のシートの確認について  ■名前 : つん <honey@sweetparty.ne.jp>  ■日付 : 02/9/5(木) 12:46  -------------------------------------------------------------------------
   こうちゃんさん、こんにちは〜

ちょびさんじゃなくて、ごめんさーい

>「Sheet111」というシート名なんですね。この書式は
>Worksheets("Sheet111").PrintOut Copies:=1
>を略してある書式ですね^^;

そうじゃないと思います。
「Sheet111」というシート名なら、Sheet111.PrintOut...という書き方はNGになると思う。
「Sheet111」っていうのは、VBEのエクスプローラにあるシートの・・なんていうんだろう?オブジェクト名?なのでは?
インデックス番号とも違いますよね?

Sheets(111).PrintOut Copies:=1
だと、インデックス番号での指定になりますよね。

シートの指定の仕方は、そうなると、3種類のやり方があるってことでしょうか?

・シート名で指定
・インデックスで指定
・ちょびさんのやりかたでの指定

私は、いつも「シート名」で指定するやり方ばかりなんですけど、
みなさんはどうなのかなー?いろいろ使い分けてたりするのでしょうか?
 ───────────────────────────────────────  ■題名 : Re:現在のシートの確認について  ■名前 : りん <rin_doggie@hotmail.com>  ■日付 : 02/9/5(木) 13:12  -------------------------------------------------------------------------
   つんさん、こうちゃんさん、こんにちわ。

>そうじゃないと思います。
>「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

↑これで違いがわかります。
 ───────────────────────────────────────  ■題名 : たびたびごめん  ■名前 : こうちゃん <nakajima19@hotmail.com>  ■日付 : 02/9/5(木) 14:02  -------------------------------------------------------------------------
   りん さん、つんさん

そですね、オブジェクト名ですね。
勘違いしておりました^^;
 ───────────────────────────────────────  ■題名 : 新しい問題  ■名前 : ちょび  ■日付 : 02/9/5(木) 12:49  -------------------------------------------------------------------------
   ちょびです。

▼こうちゃん さん:
>ちょび さん、こんにちは
>もうみてないかな?

いえいえ、ちゃんと見させていただいてます。(^^ゞ

>「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
 ───────────────────────────────────────  ■題名 : Re:新しい問題  ■名前 : つん <honey@sweetparty.ne.jp>  ■日付 : 02/9/5(木) 13:01  -------------------------------------------------------------------------
   ちょび さん、こんにちは〜

>>「Sheet111」というシート名なんですね。この書式は
>>Worksheets("Sheet111").PrintOut Copies:=1
>>を略してある書式ですね^^;
>そういうことになるんですね。(無知だー)
>確かに、今確認したらプロパティウインドウでは
>オブジェクト名が、Sheet111になっていました。

いや、ちょっと違うようです。
こうちゃんさんの書き込みにレス入れたので、読んでみてちょ。


>たとえば上のSheet111を2ページ目だけ印刷させる場合はどのように
>書けばいいんでしょうか?

 Sheet111.PrintOut from:=2, to:=2, Copies:=1

こんな感じでOKだと思います。
 ───────────────────────────────────────  ■題名 : Re:新しい問題  ■名前 : ちょび  ■日付 : 02/9/5(木) 14:17  -------------------------------------------------------------------------
   つんさん、ありがとうございますぅ・・・

>いや、ちょっと違うようです。
>こうちゃんさんの書き込みにレス入れたので、読んでみてちょ。

読みましたよー。
オブジェクト名とNameとさらにインデックス番号っていうのがあるんですねーーー。
知らなかった。

>私は、いつも「シート名」で指定するやり方ばかりなんですけど、
>みなさんはどうなのかなー?いろいろ使い分けてたりするのでしょうか?

にゃはは。私だけかもしれません。
シート名で指定っていうのが確かにわかりやすいのかもしれないのですが
私の場合のシート名が、漢字名+数字とか漢字名+アルファベットなので
数字やアルファベットの部分を半角と全角で混乱してしまうことが
多いんです。
というわけで今回は数字の桁と番号で100の位は条件、10の位は計算方法、
1の位は結果・・・・みたいな具合に振り分けて見たということなんです。

ただ、このやり方ではシートの番号(オブジェクト名)を毎回エクスプローラで
確認しなければ忘れてしまうので、あまり賢いやり方とは言えないようです。(^_^;)


>>たとえば上のSheet111を2ページ目だけ印刷させる場合はどのように
>>書けばいいんでしょうか?
>
> Sheet111.PrintOut from:=2, to:=2, Copies:=1

これで、ばっちりです。\(^o^)/
解決しました。
カンマ(,)を入れるって事がわかんなかったんですよ。
助かりました。
ありがとうございましたm(_ _)m
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━    通常モードに戻る  ┃  INDEX  ┃  ≪前へ  │  次へ≫    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━                                 Page 36