• 締切済み

VBAの移行

エクセルからリブレに移行するにあたり、 エクセルで機能していたVBAコード: Function BeepMe() As String Beep BeepMe = "" End Function を Option VBASupport 1 REM BASIC Sub Main Function BeepMe() As String Beep BeepMe = "" End Function Sub Macro1 End Sub と書き換えました。 でもこれではエラーになってしまいます。 詳しい方、教えてください。

みんなの回答

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

#1で(多分)おっしゃっているように、FunctionをSub EndSubの中に挟むのは、他システムとは言え、 おかしいと思う。こんなことで、他ソフトへの移植という難事をこなせるのだろうか。 FunctionーEndFunctionは、エクセルのように標準モジュールのような 決まったところへ書かなければならないか、調べてください。それだけでしょう。 その他にそのFunctionを使うところで(記述行・箇所で)、Callが必ずいるとか、 引数の書き方(( )内に書くや1スペース空けて書けばよいなどのルール(VBAと違いはないか)を再確認してください。この点で、つい間違う経験をよくする。

  • asciiz
  • ベストアンサー率70% (6821/9700)
回答No.1

LibreOffice BASIC は使ったことありませんが、ちょっとマニュアルを見たところ、同じ構文らしい Functionステートメントが存在します。 なので、わざわざSubステートメントに書き換える必要はありません。 Function BeepMe() As String Beep BeepMe = "" End Function のままで、動くのではないでしょうか。 また、sub でサブルーチンを書く場合は、「sub [サブルーチン名] ~ End Sub」とする必要があります。 ご質問の画面でエラーが出ているとすれば、「『Sub Main』に対応する 『End Sub』が無い」というエラーだと思いますが、その原因は、そもそもの「Sub Main」という行が余計であるということです。

3060041
質問者

お礼

有難うございます。

関連するQ&A

専門家に質問してみよう