なずブログ

インフラSE、Java開発、リモートワークエンジニアな人のメモ帳

VBA初級~関数と返り値~

f:id:nazuna_0124:20190830190707p:plain

ツイッターに投稿してみた画像を流用してみるテストっと。


苦手だから作るの大変なんですよ!!


おつかれさまです。なずなです。


今日は金曜日なので、がんばってみてコードを付けつつの投稿です。


今日の記事あたりがすんなり理解できていると

VBAとしてはそろそろ中級者が見えてきますです。



概要

ここで説明するのは、命令すると同時に受け取れるものが返ってくるものです。

いろいろ種類があって複雑です。ざっくりと以下になります。


  1. 組み込み関数

  2. 自作関数

  3. オブジェクトメソッドの返り値

  4. オブジェクトのプロパティ


4だけ実は仲間外れとも言えます。

使い方はそっくりで、最初はわからんので一緒に覚えちゃいましょう。


ややこしいので今回は省きますがこれに加えてワークシート関数もあります。


1. 組み込み関数

初めから使える関数のことですが、これだけだとなんとも。


Sub 組み込み関数()

    Debug.Print Now()
    Debug.Print Format(Now(), "mm/dd")
    Debug.Print Left("Hello", 2)

End Sub

この辺で覚えておきましょう。

Debug.Print はずすとエラーが出ちゃいます。


2. 自作関数

説明のために自作と付けていますが、普通に関数、Functionって呼ばれます。


Sub 自作関数を実行()

    Debug.Print 自作関数()

End Sub


Function 自作関数() As String
    Dim 返す文字列 As String
    

    返す文字列 = "今日は" & Format(Now(), "mm/dd") & "です"

    自作関数 = 返す文字列

End Function

最初は使いどころが思いつかないかもしれません。

こういう風に作れるってだけでだいじょうぶです!



3. オブジェクトメソッドの返り値

まずはコードから

Sub オブジェクトのメソッド()
    Dim シート As Worksheet
    
    Set シート = Worksheets.Add
    
    Debug.Print シート.Name
    
End Sub

WorksheetsのAddメソッドを使うと、追加したシート

オブジェクトとして返ってきます。


これは受け取らなくてもOKパターン。


そして、ついでに4のプロパティもやっちゃってます。



オブジェクトを受け取っているので追加したシートが特定できてます。


変数のプロパティでnameを指定するとシート名が出てくるってわけですねー。


もちろん、nameプロパティなので=で名前を指定してやれば変更できます。



なかなか使い分けが難しいです。

わかんないところあったら聞いてください!