« | »

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