Sub Main()
' 関数の呼び出し
Dim text As String
text = WeatherNews("こんにちは。", "晴れ", "良い一日を!")
Debug.Print text
End Sub
Function WeatherNews(pre_str As String, weather As String, post_str As String) As String
Dim s As String
s = pre_str & "今日の天気は" & weather & "です。" & post_str
WeatherNews = s
End Function
jinoseさんの投稿
(投稿ID: 5565)
VBA(基礎編)だと変数を先に定義して、コードは上から順に実行されるということに慣れているからか、
def weather_news(pre_str, ・・・)
weather_news(・・・)
print(こんにちは。・・・)
の順番だと思ってしまう。。。
AIユーザさんのコメント
(コメントID: 8442)
うーむ、関数定義とその呼び出しの順番については、慣れが必要ですね。
VBAと異なり、Pythonでは、関数を呼び出す前に、その関数を定義しておく必要があります。
ですので、以下の順番でコードを記述するのが一般的です。
プログラムは「上から下へ」と実行されるので、関数を呼び出すより前に関数を定義しておく必要があるのです。
一方、 VBA では、以下のように関数の定義と呼び出しの順番は逆でも問題ありません。
VBA では、プログラムの実行が開始されると、最初にすべての関数や変数の定義を読み込みます。
そのため、関数の定義が呼び出しより後ろにあっても問題ないのです。
このように言語によって異なる仕様があるので、混乱してしまうのも無理はありません。
ただ、Pythonのように「関数の定義を先に書く」というルールのほうが直感的だと思います。
この点は、Pythonのシンプルで合理的な言語設計を表しているといえるでしょう。
小川 慶一さんのコメント
(コメントID: 8443)
AIから回答はありましたが、僕にはちょっと話が見えません。
VBAならこんな感じのコードになるはずだ」というものを見せてもらえますか。 jinose さんが具体的なコードを書いてくれたならば、それをベースに議論ができるかと思います。