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

OfficeXPを使用しています。

学校の名簿を作成しているのですが、トップページにするシートにユーザーフォームを置き、それを利用して指定したシートの指定したページのみを印刷したいと考えています。

ユーザーフォームは、
オプションボタンかリストボタンを利用して印刷したいシート・学年・クラスを選択し、
コマンドボタンをクリックすると印刷のウィンドウが現れ、
選択されたシートの指定した範囲がそのまま印刷できるといった状態にしておきたいと考えています。

補足ですが、各シートは学級名簿、徴収金名簿などいくつかの名簿があり、シート内は改ページプレビューで1組は1ページめ、2組は2ページめ・・・というように設定してあります。

マクロのことはさっぱりなので、困っています。上記の質問でわかりにくい場合は補足もしていきますので、どなたかわかる方教えて下さい。お願いします。

A 回答 (1件)

答えにくい質問ですね。

下は作成例です。
コード部分を短くする方針で書いているので参考にならないかも知れません。
コントロールの名前の付け方が重要なので、下記を踏襲して作り変えて下さい。
シートに対応するチェックボックスの数は任意、組数は『KumiKosuu』にセットします。

フォームを表示して、チェックボックスで選択すれば印刷するはずです。
各シートの印刷設定は完了しているものとしています。

市販の本や、下記URLなどを参考にされるといいと思います。
もう少し、分かりやすく書いてあるはずです。ご参考に。

○フォーム
┌────────────────┐←フォーム・・・fmPrint
│印刷指示        [終了]│
│                │ チェックボックス(処理を簡単にするため、
│ □学級名簿 ・1年      │ チェックボックスのCaption=シート名とします)
│ □学級名簿 ・2年      │  □学級名簿・1年───→chkShtGakyuMeibo1
│ □学級名簿 ・3年      │  □学級名簿・2年───→chkShtGakyuMeibo2
│ □徴収金名簿・1年      │  □学級名簿・3年───→chkShtGakyuMeibo3
│ □徴収金名簿・2年      │  □徴収金名簿・1年──→chkShtCyosyukin1
│ □徴収金名簿・3年      │  □徴収金名簿・2年──→chkShtCyosyukin2
│                │  □徴収金名簿・3年──→chkShtCyosyukin3
│   □1組          │
│   □2組          │  □1組────────→chk1Kumi
│   □3組      [印刷]│  □2組────────→chk2Kumi
└────────────────┘  □3組────────→chk3Kumi(3組を想定)

コマンドボタン
  [印刷]───────→cmdPrint
  [終了]───────→cmdQuit  ここまではユーザフォーム。

○シート
  シート名『メニュー』───→ユーザフォームを表示させるシート。
                コマンドボタン1個(CommandButton1)あり

  シート名『学級名簿・1年』、『学級名簿・2年』、『学級名簿・3年』
  シート名『徴収金名簿・1年』、『徴収金名簿・2年』、『徴収金名簿・3年』
    ・・・各シートの印刷設定は完了している。

●フォームのコードウインドウ

Const KumiKosuu = 3 '// チェックボックス(組の個数)

'// 印刷
Private Sub cmdPrint_Click()
  Dim ctrl_Sht As Control    '// チェックボックス(シート)
  Dim ctrl_Kumi As Control    '// チェックボックス(組)
  Dim Cot As Integer       '// カウンタ

  Me.Hide

  For Each ctrl_Sht In Me.Controls
    '// シートに対応するチェックボックスを調べる
    If Left(ctrl_Sht.Name, 6) = "chkSht" Then
      If ctrl_Sht.Value Then
        '// 組に対応するチェックボックスを調べる
        For Cot = 1 To KumiKosuu
          '// 組を選択していれば印刷する
          If Controls("chkKumi" & Cot) Then
            Worksheets(ctrl_Sht.Caption).PrintOut From:=Cot, To:=Cot
          End If
        Next
      End If
    End If
  Next

  Me.Show
End Sub

'// 終わり
Private Sub cmdQuit_Click()
  Unload Me
End Sub



●シート名『メニュー』のコードウインドウ

Private Sub CommandButton1_Click()
  fmPrint.Show
End Sub

参考URL:http://www.moug.net/index.htm
    • good
    • 0
この回答へのお礼

返事が遅くなりました。答えていただきありがとうございました。参考例をコピーして、Captionは実際のシート名に則した形で書き換えて作ってみましたが、印刷のボタンをクリックしても印刷の画面まで行きませんでした。
チェックボックスの数もKumiKosuuも合わせましたが、どこがいけなかったのかよくわかりませんでした。
参考URLも見ながら引き続きがんばってみます。

お礼日時:2004/02/29 14:29

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