• 締切済み

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/17068)
回答No.2

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

全文を見る
すると、全ての回答が全文表示されます。
  • asciiz
  • ベストアンサー率70% (6650/9424)
回答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

  • 本当に基本的なことなんですが

    エクセルVBAでモジュールを使おうと思っています。 以下のようにモジュールにコードを書き、実行したらコンパイルエラー End Subが必要ですとメッセージがでてしまいます。 どこをどう直せばいいんでしょうか? 変数を宣言しているだけだと思うんですが。 Sub Macro1() ' ' Macro1 Macro ' マクロ記録日 : 2002/10/29 ユーザー名 : ' Sub Main() Public BaseCell As CellFormat Public BaseCellRow, BaseCellColumn As String End Sub End Sub 暇な時でいいですから、回答お願いします。

  • VBA関数の使い方がわからないです

    A1にはハイパーリンクとしてhttp://www.yahoo.co.jp/ が入っていて、標準モジュールで Sub Macro1() MsgBox HyperlinkAddress End Sub Function HyperlinkAddress(target As Range) As String HyperlinkAddress = target.Hyperlinks(1).Address End Function としたら、引数は省略できません。になるのですが、 どうすればいいですか? Sub Macro1() MsgBox Selection.Hyperlinks(1).Address End Sub これと同じような事を、関数を使って表現したいです。

  • VBAについて質問させて下さい。

    VBAについて質問させて下さい。 Sub Exsample() Dim a As String a = "aaa" MsgBox Ketugou(a) End Sub Function Ketugou(x As String) Ketugou = x End Function このサンプルコードについて質問が2つあります。 【質問1】 なぜ x=a、 と言う式はないのに xにが代入されるのでしょうか? 【質問2】 なぜ MsgBox Ketugou(a) では aaa(aaa) とならないのでしょうか? a = "aaa" Ketugou= "aaa" になってるはずですが。 よろしくお願い致します。

  • Excel VBAについて。

    VBAに詳しい方に質問です。 次の2つのプログラムが何をしているのか詳しく教えて下さい。 Sub Macro1() Sheets("Sheet1").Range("A1").QueryTable.Refresh BackgroundQuery:=False End Sub ------------------------- Function LNK(rng As Range) LNK = rng.Hyperlinks(1).Address End Function

  • VBA 関数(Function) カッコの後のデータ型は必要?

    Function あ() あ = "あああ" End Function Sub test3() MsgBox あ End Sub と、 Function あ() As String あ = "あああ" End Function Sub test3() MsgBox あ End Sub は同じ動作をするのですがやはり「As String」をつけたほうがいいのですか? ウォッチウインドウで確認すると 「As String」がないほうは「Variant/ String」型ですが あるほうは「String」型のみです。

  • 【1】と【2】のvbaは同じ意味ですか?

    【1】 Option Explicit Sub test1() Call test2("aaa") End Sub Sub test2(MyStr As String) MsgBox MyStr End Sub 【2】 Option Explicit Dim MyStr As String Sub test1() MyStr = "aaa" Call test2 End Sub Sub test2() MsgBox MyStr End Sub 結果は同じですが、中身が違います。 今後コードを作っていく上で どちらの方式の方が良いのでしょうか?

  • 【vba】Beep音が鳴らない

    Beep音を鳴らしたいのですが Sub Macro() Beep End Sub では鳴りません。 でもデバッグしても何も起こりません。 音楽は聴けるのでスピーカーは正常です。 何がいけないのでしょうか? よろしくお願いします。

  • BEEP音を再生したい

    下のドレミを再生したいのですが具体的にどのようにどこへ記載すれば再生できますか? Private Sub? Declare Function Beep Lib "kernel32" ( _           ByVal dwFreq As Long, _           ByVal dwDuration As Long _           ) As Long 上記のコードをSUB に記載するとエラーになります。 これがないとCALL Beepもエラーになります。 '=============================== Sub Test()  Call Beep(262, 500)  Call Beep(294, 500)  Call Beep(330, 500)  Call Beep(349, 500)  Call Beep(392, 500)  Call Beep(440, 500)  Call Beep(494, 500)  Call Beep(523, 500) End Sub VBA初心者です分かりやすくお願いします。

  • vbaで鳴らした音楽を止めたい

    vbaのAPIで音楽を鳴らした後、 曲が終わる前に、vbaで終了させたいのですが Option Compare Database Option Explicit Declare Function mciSendString Lib "winmm.dll" Alias "mciSendStringA" _ (ByVal lpstrCommand As String, ByVal lpstrReturnString As String, _ ByVal uReturnLength As Long, ByVal hwndCallback As Long) As Long Sub test() Dim mySoundFile As String Dim rc As Long mySoundFile = "C:\tset.mp3" rc = mciSendString("Close " & mySoundFile, "", 0, 0) End Sub これを実行してもエラーにもならないし音楽も鳴り止まないのですが どこがまちがってますか? "C:\tset.mp3"で音楽を再生したので、 "C:\tset.mp3"は存在します。

  • エクセル 任意の文字をVBAで使いたい時

    Excel VBAで、任意の文字(特定の文字ではなく、何か文字があるという状態)を含んだ語を、置換したいです。 具体的には、「;?」を「; ?」として置換したいです。 ※ここで「?」は任意の文字としています。 以下のコードで試しましたが、うまくいきません。 Sub macro2() Dim myRange As Range Dim keyWord1 As String, keyWord2 As String Dim bool As Boolean Set myRange = Range("C4") keyWord1 = ";?" 'ワイルドカードを使用 keyWord2 = "; ?" bool = myRange.Replace(keyWord1, keyWord2, LookAt:=xlWhole) End Sub keyWord1 = ";?" 、keyWord2 = "; ?"の「" "」の部分に何を入れればいいか、ご教授願います。 宜しくお願い致します。

専門家に質問してみよう