VBAのメソッドの引数
先日、EXCELの VBA をいじる機会がありました。
なんでも、特定のワークシートをPDF出力したいとか。VBAはいじったことなかったんですが、ちょっとググってみたらすぐに方法は見つかりました。
複雑なプログラム書かなくても、ワークシートのなんつーの?メソッドでいいのかな?にパラメータを引き渡すだけでした。
でもなんか納得いかない
Microsoftの説明だと
object.ExportAsFixedFormat(Type, FileName, Quality, IncludeDocProperties, IgnorePrintAreas, From, To, OpenAfterPublish, FixedFormatExClassPtr)
なのに、実例の説明だと、
OutputPath = "\PDFfile.pdf" object.ExportAsFixedFormat Type:=xlTypePDF,filename:=OutputPath
みたいにパラメータを引き渡すのに()の中に入れず、「引数名:=パラメータ」を後ろにつけてるんですよ。
しばらく考えてると、昔のMZのBASICやN88BASIC は引数が()に入ってなかったような気がしてきました。
(サブルーチンはあっても、引数を取る関数って概念がなかったかも)
そっか、BASIC的には()がカッコに入れるほうが特殊だったのかもね。
でも、()の有無でどう違うのか分かんなかったので、その後さらにぐぐってみてやっとわかりました。
- 関数とかメソッド単独で使うときには、引数は ()なしで後ろにずらずら
- 戻り値を変数に入れるとか、CALL 命令の後に書くときは()の中に入れる
ってことみたいですね。
(この記事がわかりやすかったです)
ついでに、後ろにづらづらのときは、
引数名:=パラメータの形で書いておくと、引数の順番を気にしなくてもいい
ってのもわかりました。
VBA でなくて VB.NETの場合にはみんな()が必要らしいので、
「VBの仕様的には()が標準だけど、VBAでは条件によっては()無しでずらずら並べるのも許される」
と覚えておくことにします。
あ、取っ掛かりの VBAでPDF出力させるコードは、chatGPT にきいてみたやつが、簡潔で良いと思いました。
でも、Mac版 EXCELでは使えないことまでは教えてくれませんでした。
Sub ExportToPDF() ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _ "C:\Users\YourUsername\Documents\FileName.pdf", Quality:=xlQualityStandard, _ IncludeDocProperties:=True, IgnorePrintAreas:=False,OpenAfterPublish:=True End Sub
レスポンス
コメントする
Trackback URL