連載
» 2014年05月15日 18時00分 公開

VBA/マクロ便利Tips:Excel方眼紙をきめ細かい設定で簡単に作り印刷するには (3/3)

[薬師寺国安,PROJECT KySS]
前のページへ 1|2|3       

「印刷プレビュー」ボタンがクリックされたときの処理

 次は「印刷プレビュー」ボタンがクリックされたときの処理だ。

Private Sub 印刷プレビューボタン_Click()
  If 範囲テキストボックス.Text = "" Or 左余白テキストボックス.Text = "" Or 右余白テキストボックス.Text = "" Or 上余白テキストボックス.Text = "" Or 下余白テキストボックス.Text = "" Then
    MsgBox "未入力の個所があります!"
    Exit Sub
  Else
    UserForm1.Hide
    With Worksheets("Sheet1").PageSetup
      .PrintArea = 範囲テキストボックス.Text
      .Orientation = xlPortrait
      .Zoom = False
      .FitToPagesTall = 1
      .FitToPagesWide = 1
      .LeftMargin = Application.CentimetersToPoints(左余白テキストボックス.Text)
      .RightMargin = Application.CentimetersToPoints(右余白テキストボックス.Text)
      .TopMargin = Application.CentimetersToPoints(上余白テキストボックス.Text)
      .BottomMargin = Application.CentimetersToPoints(下余白テキストボックス.Text)
    End With
  Worksheets("Sheet1").PrintPreview
  End If
End Sub
リスト5 「印刷プレビュー」ボタンがクリックされたときのコード

 「範囲」「左余白」「右余白」「上余白」「下余白」テキストボックスに値が未入力なら、警告メッセージを発して処理を抜ける。それ以外は、以下の処理を繰り返す。

 HideメソッドでUserFormを隠す。Hideメソッドを使った場合は、UserFormが隠れているだけで、メモリ上には残っているので、再度呼び出した場合は、入力した値を保持したまま表示される。

 なお、UserFormを終わらせて入力した値を消去するには、Unloadメソッドを使用するとよい。こうすればメモリ上からも削除される。

 Orientationプロパティには、ワークシートを印刷する場合のページの方向を設定する。ここでは、「xlPortrait」を設定して「縦モード」で印刷するよう設定している。「横モード」で印刷する場合は「xlLandscape」を設定する。

 方眼紙を1ページに収めるには、FitToPagesTall/FitToPagesWideプロパティを使用し、値に「1」を指定して、1ページに収まるよう指定する。

 FitToPagesTallプロパティは、ワークシートを印刷するときに、縦何ページ分で収めるかを示す値を設定する。FitToPagesWideプロパティは、ワークシートを印刷するときに、横何ページ分で収めるかを示す値を設定する。

 「左余白」の設定には「LeftMargin」、「右余白」には「RightMargin」、「上余白」には「TopMargin」、「下余白」には「BotttomMargin」プロパティでそれぞれ指定し、センチからポイントに変換するCentimetersToPointsメソッドで、各余白を入力するテキストボックスの値を指定している。

 最後に、PrintPreviewメソッドで印刷プレビューを表示する。

方眼紙を印刷するときの注意

 なお、このフォームで初期値に設定している値は、先にも書いたがA4サイズ用紙の縦でちょうどいっぱいの方眼紙になる。

 実際に印刷すると「A4」用紙一杯の極小方眼紙が印刷される。もう少し方眼紙を大きくしたい場合は、図3の方法で「列幅」や「行高」を変更して、その値を取得して指定し、「範囲指定」の「セルの範囲」も変更する必要がある。

 これは実際に設定して、「印刷プレビュー」で確認しながら、試行錯誤して設定する以外にない。

図3 「行高」「列幅」をツールチップで確認する

 行の高さや、列の幅を同じにするには、図3のように「行幅変更」位置や「行高変更」位置ににマウスカーソルを合わせて、ツールチッブで表示される値を確認して、入力するといいだろう。

 図3では同じ「42ピクセル」になっているが、実際の「高さ」や「幅」は数値が異なっている。「列幅」や「行高」に指定する値は、この「幅」と「高さ」の値を指定する。「42ピクセル」ではないので、注意してほしい。

実行結果

 作成した「Excel方眼紙作成フォーム」を実行すると図4のように表示される。

図4 「Excel方眼紙作成フォーム」で「実行」ボタンを押す
図5 Excel方眼紙が出来たので、「印刷プレビュー」ボタンを押す
図6 印刷プレビューの結果

 あとは、マクロを実行して実際にExcel方眼紙を作成したり、印刷したりして試してほしい。

次回は、マクロをExcelのメニューから呼び出すTips

 今回はExcel方眼紙の作成方法をフォーム上から行うTipsを紹介した。コード自体はそんなに難しくないが、「A4」用紙に方眼紙を収めるのがちょっと面倒だ。これはプログラムというより、試行錯誤してセルの範囲を指定して、印刷プレビューで確認しながら、セルの範囲を指定していく以外にない。

 またExcelの画面では大きく見える方眼紙も、実際に印刷すると極小の方眼紙になる。これは指定したページを1ページに収めるように指定しているから仕方がないだろう。

 さて、せっかく作成したマクロだが、いちいちボタンを作成して呼び出すのは面倒なので、Excelのメニューからマクロを起動できるようにしたい。

 次回は、今回作成したフォームをどのようにして呼び出すかを解説しよう。「Excel方眼紙作成」というメニューを追加して、そこからフォームを表示させるようにするので、お楽しみに。

著者プロフィール

薬師寺 国安(やくしじ くにやす) / 薬師寺国安事務所

薬師寺国安事務所代表。Visual Basicプログラミングと、マイクロソフト系の技術をテーマとした、書籍や記事の執筆を行う。

1950年生まれ。事務系のサラリーマンだった40歳から趣味でプログラミングを始め、1996年より独学でActiveXに取り組む。

1997年に薬師寺聖とコラボレーション・ユニット「PROJECT KySS」を結成。

2003年よりフリーになり、PROJECT KySSの活動に本格的に参加。.NETやRIAに関する書籍や記事を多数執筆する傍ら、受託案件のプログラミングも手掛ける。

Windows Phoneアプリ開発を経て、現在はWindowsストアアプリを多数公開中。

Microsoft MVP for Development Platforms - Client App Dev(Oct 2003-Sep 2012)。

Microsoft MVP for Development Platforms - Windows Phone Development(Oct 2012-Sep 2013)。

Microsoft MVP for Development Platforms - Client Development(Oct 2013-Sep 2014)。


前のページへ 1|2|3       

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。