前提・実現したいこと
LibreOfficeを初めて使います。
ボタン1を作り、クリックするとそのボタンを非表示にしたいです。
また、ボタン2を押すことで非表示になったボタン1を表示させたいです。
ボタンはフォームコントロールから追加するボタンです。
発生している問題・エラーメッセージ
いくつかのサイトを参考に以下のようにマクロを書きました。
VBA
1Option VBASupport 1 2 3sub test 4Dim BT1 As Object 5BT1 = ActiveSheet.getByName("Bt1") 6ActiveSheet.BT1.Visible = False 7End Sub
しかし、以下のようなエラーが出ます。
BASIC ランタイムエラー. '423' getByName
どうすればいいかさっぱりなのですが、そもそもLibreOffice CalcではExcelで言うところの「オブジェクト名」はどれに当たるのでしょうか?フォームのプロパティの名前、コントロールのプロパティの名前の2カ所を"bt1"にしています。
補足情報(FW/ツールのバージョンなど)
LibreOffice 6.4.4.2 64bit
もしかして勘違いされているかもしれませんので、少し補足します。
Option VBASupport 1
これは、LibreOffice BasicをVBA互換モードで動かす命令です。
ですので、基本的にこれらのコードはExcel VBAのコードです。
VBA互換モードは完全互換ではありませんので、エラーコード423のようなことが頻繁に起きます。
423 属性またはメソッドが見つかりません
さて、これらを前提に何をしたいのか?を再考する必要があります。つまり、
1.Excel VBAの勉強をしたいのであれば、Excelを使って再度やり直す。
2.LibreOffice Basicの勉強をしたいのであれば、そちらのコードを勉強する。
3.LibreOffice Basicの VBA互換モードの勉強をしたいのであれば、その互換性を問う質問とする。
となると思います。
Microsoft Officeは使いません。LibreOfficeだけで済ませたいです。
ボタン1を作り、クリックするとそのボタンを非表示にする、ボタン2を押すことで非表示になったボタン1を再表示させるという目的が達成できれば、どのような方法でもいいです。なんとなくVBA互換では対応できないことは気づき始めてます。。。
"Option VBASupport 1"に関しましては使えればいいな程度に思って記述しているのであまり期待していません。もしかしてVBA互換モードというのは「LibreOffice Basic + VBAも使える」ではなく「(ほぼ)完全にVBAとして動作する」ということですか?
なるほど。VBA互換モードでもLibreOffice Basicは使えると思います。混在すると判りにくいかな?と思いまして。
ただ、私もcalc関連で色々サイト見てますが、今回のケース(直接ボタンがシートにあるパターン)はまだサイトで見たことがありません。あるのはマクロを登録するだけのパターンだけですね。あとは全部フォーム上のオブジェクトの操作になりますね。
ちなみに互換比較サイトなんかもありますが、フォーム前提みたいです。
http://addinbox.sakura.ne.jp/OOo_vs_VBA.htm
libreoffice.orgにもQ&Aありますが、あまり活発ではないですね。
https://ask.libreoffice.org/ja/questions/
ということで、とりあえずコントロールを新規に作成するOOoBasicサンプルなら見つけましたが、あとはどうにかなりますかね?
http://hermione.s41.xrea.com/pukiwiki/pukiwiki.php?OOoBasic%2FDraw%2FShapes#b0e526f6
一応私の環境ではボタン作成はできました。ただ、非表示はどうなんでしょうね?
ちなみに私の環境ではボタンのプロパティの表示を「いいえ」にしても消える気配がないですよ。
まあcalc自体の信頼性がどこまでか?っていうのも含めて興味はありますが・・・
そうなんですよね…情報が少なすぎてほとんど進みません。
一応、オブジェクト名に関しては解決できました。ボタンのサイズが変更できるようになりました。実は今回趣味でやっているのではなく期限が決まっております。なので今回はサイズ変更で対処しようと思います。
rakko_midoriさん、お付き合いいただきありがとうございます。
また、もしかしたら良い案をお持ちの方がいらっしゃるかもしれないので、期限(?)まで回答待ちにしておこうと思います。
回答1件
あなたの回答
tips
プレビュー



