Excel (VBA)

Excel VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 10全般 : Excel 2019)
印刷プレビュー
投稿日時: 23/05/10 19:52:48
投稿者: FAB

EXCELVBAで、thisworkbookから、callにてモジュールを呼び出しています。
  
Private Sub Workbook_Open()
Call *****
End Sub
 
印刷プレビューを出しているのですが、ローカルではOKなのですが、ネットワークドライブにファイルを置いて起動すると、印刷プレビューの「印刷、ズーム、プレビュー」がグレーアウトして選択できなくなります。
  
 PrintOut Preview:=True
  
 原因、直し方、分かる方いらっしゃいましたら、教えて下さい。
 よろしくお願い致します。

回答
投稿日時: 23/05/10 22:35:58
投稿者: simple

ThisWorkbookモジュール

Private Sub Workbook_Open()
    Application.OnTime Now(), "test"
End Sub

標準モジュール
Sub test()
    ActiveSheet.PrintOut Preview:=True
End Sub
としてみてください。

投稿日時: 23/05/11 19:47:58
投稿者: FAB

ありがとうございます。
教えていただいた通り上手くいきました。
 
もう一つ教えていただきたいのですが、formからcallでモジュールを呼び出していた時、変数を引き継いでいました。
Application.OnTimeでモジュールを呼び出す時の変数の書き方が上手くいきません。
下記のように書いていました。
 
  Option Explicit
 
  Public Day As String
 
   Private Sub CommandButton1_Click()
 
   Call Module1.*****(Day)
 
  End Sub
 
調べてこのように書いてみたのですが。
 
  Application.OnTime Now(), "'Module1.*****" & Day & " '"
 
下記のようなエラーが出ます。
 
マクロ"C:\***.xlsm'!'module1.*****.xlsm"を実行できません。このブックでマクロが使用できないか、またはすべてのマクロが無効になっている可能性があります。
 
他にも書いてみましたがわかりませんでした。
 
すいませんが、よろしくお願い致します。

回答
投稿日時: 23/05/11 22:02:36
投稿者: simple

1)Public変数ならば、引数で渡す必要もないと思いますが、いかがですか?
  また、もし行うとしてもPublic変数宣言は標準モジュール側で行うのが普通です。
2)プロシージャ名と引数がスペースなしに連結してしまっているのが原因でしょう。
  Debug.Print "'Module1.*****" & Day & " '"
  などとして、ご自分で確認するとよいでしょう。(慎重さ、しつこさも必要です)
3)Module1とする意味は、同名のプロシージャが別のモジュールにあるんですか?
  そうなら結構ですが、もしなければモジュール指定は不要です。
 
こんな書き方でどうですか。
文字列変数は文字を展開して"で囲んで渡します。
参考にしてください。
 
<<Module2>> Call側

Private Sub test2()
    Dim s As String
    s = "aaa"
    '''' Debug.Print "'test " & """" & s & """" & "'"
    Application.OnTime Now(), "'test " & """" & s & """" & "'"
End Sub

<<Module1>>
Sub test(s)
    MsgBox s
End Sub
(# FunctionでもOKです。)

回答
投稿日時: 23/05/11 22:21:29
投稿者: simple

ちなみに、
・複数の引数はカンマで区切ります。
・文字列は"で囲みます。
・数値はそのまま渡せます。(位取りのカンマは不可w)
・オブジェクトは渡せません.

投稿日時: 23/05/12 07:52:30
投稿者: FAB

ありがとうございます!
 vba素人なので、ホント勉強になります。
他に頼る人もいないので、チョット感動しております。
いただいた内容で自分で解決してみます!
もし、つまずいてしまったら、また助けて下さい!
ありがとうございました!