Excelのこととか色々

Excel のこととか楽天とか いろいろ書いてみます・・・

【VBAスタンダードに挑戦!】ワークシート関数(EOMONTH/DateSerial 関数)

【VBAスタンダードに挑戦!】

f:id:tuna-kichi:20200614200940p:plain

 

本日の5分勉強の内容

 

 

********************************************************

ワークシート関数

・ワークシートで使用している関数をマクロでも使用できる

・WorksheetFunction. 関数名 (引数)

・引数はワークシートで使用するとき と同じように指定する

・記述方法は VBA のルールに従う
 例) A1 (ワークシート) vs Range("A1") (VBA)

・ワークシート関数では呼び出せない関数もある
 例えば、セルの中で使用する If 関数は、マクロでは使えない
 (同じ書き方で使えない)

・使用できる関数はヘルプで確認するか、
 WorksheetFunction. (ドッドまで)を記述すれば、
 候補が表示されるので、そこで確認する

 f:id:tuna-kichi:20200808171740p:plain

 

EOMONTH 関数

End Of MONTH

・指定した月の末日を調べる

・EOMONTH(開始月, 月)

 

DateSerial 関数

・シート上で「2020」と記載されていても Excel はその数字が、
 年なのか、数値なのか、金額なのか判断できない。
 年と判断させるために DateSerial 関数が使用できる

・DateSerial(年, 月, 日)

 

                      

 

 

f:id:tuna-kichi:20200812102811p:plain

 

With WorksheetFunction
 Range("F3")=.EoMonth(DateSerial(Range("B3")Range("C3"), 1), 60 - Range("D3") *12+1)

End With

 

・60歳なる年の、入社月の前月末を退職日とする

・DateSerial 関数で、「1980」(赤枠)と「4」(青枠)を日付と定義する

・60(歳)から入社当時の年齢(緑枠)をマイナスして、
 12(ヵ月)をかけて、1マイナスする(1か月分引いて、前月にする)
 ー>EoMonth 関数の引数、開始月から何か月目かを指定するのに使用する

 

                      

 もう少し、実際的にしてみた。

 

Sub 退職日計算()

 Dim WY As Long 'Work Year の略とした
 Dim r As Long '行を表すのに使う

 With WorksheetFunction
  For r = 3 To 5 
   WY = 60 - Cells(r, 4) 'EOMONTH 関数の引数に使う
   Cells(r, 6) = Format(.EoMonth(DateSerial(Cells(r, 2), Cells(r, 3), 1), WY * 12 - 1),     "yyyy/mm/dd")
    'Format 関数で表示形式を日付で指定しないと、シリアル値が返される

  Next r
 End With
End Sub

********************************************************

なんとなくサンプルでコードを作成してみましたが、

この関数は、「誰が」「どこで」使用するのか(使用しているのか)

まったく想像できません。

 

SEの部署で勤務している私には、使用する機会がありません。

日付を気にするお仕事ってどんな職種でしょう?

人事とか庶務さんのお仕事でしょうか?

 

 

!!!

 

 

きっと、この関数自体をそのまま使用するのではなく、

「この関数を経由して、変換してから、期待した結果を表示する」

って感じで使用するんだ!(そうかな?)

 

 

 

 

_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/