| 
    
     |  | スレッド61292で以前質問させて頂いた内容に、新たな修正を加えたく、 ご質問させて頂きます。
 
 修正する度に行数が変わるエクセルシートを印刷するため、
 改ページ位置をその都度指定して印刷できるよう、
 ユーザーフォームで改ページの指定を促すようにしました。
 
 下記のように教えて頂き、上手く作動しています。
 '標準モジュール
 Sub insatsu()
 Dim gyo As Long
 Dim Ws As Excel.Worksheet
 Dim HPBreak As Excel.HPageBreak
 
 Set Ws = ActiveSheet
 gyo = 50
 
 ActiveSheet.DisplayPageBreaks = True
 
 UserForm1.Show vbModeless
 
 End Sub
 
 ' Userformモジュール
 Private Sub CommandButton1_Click()
 ' 行追加処理 ...
 End Sub
 
 上記の「行追加処理」以外にも、別プロシージャで、
 罫線を引く処理や印刷処理などを行っています。
 シートによって罫線位置やタイトル範囲が違うので変数に入れるように
 したのですが、同じような変数(gyoやTitleAreaなど)が何度も出てくるので、
 まとめようとしてグローバル変数を宣言するべく、使い方を検索していましたら、
 グローバル変数の弊害について書かれており、極力避けるようにとのことでした。
 
 そのサイトで推奨されていたのは、ユーザー定義型でしたので、
 下記のように宣言し、引数渡しをするよう設定いたしましたが、
 call insatsu(MyShokichi As Shokichi)によって呼び出される
 UserForm1のclickイベントには上手く引数を渡すことができません。
 あちこち調べましたが、わかりませんでしたので、
 どなたかご教示お願いいたします。
 
 Type Shokichi
 TitleArea As Range
 TitleGyo As Integer
 gyo As Integer
 MaxRetsu as Integer
 ・
 ・
 End Type
 
 Sub settei()
 
 Dim MyShokichi As Shokichi
 
 Dim Ws As Excel.Worksheet
 Dim HPBreak As Excel.HPageBreak
 
 Set Ws = ActiveSheet
 
 Set MyShokichi.TitleArea = '範囲
 Set MyShokichi.TitleGyo = '数値
 ・
 ・
 call insatsu(MyShokichi As Shokichi)
 
 end sub
 
 |  |