質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
LibreOffice Calc

LibreOffice Calcは、様々なOSで利用可能なオフィススイートであるLibreOfficeに含まれるオープンソースの表計算ソフトです。テンプレートや背景色、枠線といった書式設定の各項目を柔軟で設定することができます。

LibreOffice Basic

LibreOffice Basicは、LibreOfficeの作業を自動化するプログラミング言語。LibreOfficeは、OpenOffice.orgから派生しており、多くのオペレーティングシステムで利用できるオフィススイートです。

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

解決済

1回答

6126閲覧

LibreOffice Calc ボタンをマクロで表示/非表示させたい

86chan

総合スコア14

LibreOffice Calc

LibreOffice Calcは、様々なOSで利用可能なオフィススイートであるLibreOfficeに含まれるオープンソースの表計算ソフトです。テンプレートや背景色、枠線といった書式設定の各項目を柔軟で設定することができます。

LibreOffice Basic

LibreOffice Basicは、LibreOfficeの作業を自動化するプログラミング言語。LibreOfficeは、OpenOffice.orgから派生しており、多くのオペレーティングシステムで利用できるオフィススイートです。

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

0クリップ

投稿2020/06/22 03:43

前提・実現したいこと

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

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

rakko_midori

2020/06/22 05:45 編集

もしかして勘違いされているかもしれませんので、少し補足します。 Option VBASupport 1 これは、LibreOffice BasicをVBA互換モードで動かす命令です。 ですので、基本的にこれらのコードはExcel VBAのコードです。 VBA互換モードは完全互換ではありませんので、エラーコード423のようなことが頻繁に起きます。 423 属性またはメソッドが見つかりません さて、これらを前提に何をしたいのか?を再考する必要があります。つまり、 1.Excel VBAの勉強をしたいのであれば、Excelを使って再度やり直す。 2.LibreOffice Basicの勉強をしたいのであれば、そちらのコードを勉強する。 3.LibreOffice Basicの VBA互換モードの勉強をしたいのであれば、その互換性を問う質問とする。 となると思います。
86chan

2020/06/22 06:09 編集

Microsoft Officeは使いません。LibreOfficeだけで済ませたいです。 ボタン1を作り、クリックするとそのボタンを非表示にする、ボタン2を押すことで非表示になったボタン1を再表示させるという目的が達成できれば、どのような方法でもいいです。なんとなくVBA互換では対応できないことは気づき始めてます。。。 "Option VBASupport 1"に関しましては使えればいいな程度に思って記述しているのであまり期待していません。もしかしてVBA互換モードというのは「LibreOffice Basic + VBAも使える」ではなく「(ほぼ)完全にVBAとして動作する」ということですか?
rakko_midori

2020/06/22 08:53

なるほど。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自体の信頼性がどこまでか?っていうのも含めて興味はありますが・・・
86chan

2020/06/22 11:54

そうなんですよね…情報が少なすぎてほとんど進みません。 一応、オブジェクト名に関しては解決できました。ボタンのサイズが変更できるようになりました。実は今回趣味でやっているのではなく期限が決まっております。なので今回はサイズ変更で対処しようと思います。 rakko_midoriさん、お付き合いいただきありがとうございます。 また、もしかしたら良い案をお持ちの方がいらっしゃるかもしれないので、期限(?)まで回答待ちにしておこうと思います。
guest

回答1

0

自己解決

時間が経ってしまいましたが自己解決法を掲載します。

非表示・再表示という形を取りたかったのですが調べた範囲では不可能でした。なのでサイズ変更という形を取りました。

Libreoffice

1 With ActiveSheet.Shapes("Button_" + No) 'ボタンを縮小(非表示) 2 .Height = 0 'ボタンの縦幅 3 .Width = 0 'ボタンの横幅 4 End With 5 6 With ActiveSheet.Shapes("Button_" + No) 'ボタンを拡大(表示) 7 .Height = 12.888888888888 'ボタンの縦幅 8 .Width = 64.55555555555 'ボタンの横幅 9 .top = 13.0000000000000 * CInt(No) 'ボタン左上のY軸(縦)の位置 10 .left = 225.000000000000 'ボタン左上のX軸(横)の位置 11 End With

Shapes()でデザインモードで作成したボタンを指定します。
引数にボタンの番号(Int型)もしくは名前(String型)が入ります。
番号は作った順番(0スタート)です。
名前はデザインモードでボタンを右クリック(コンテキストメニュー)にある名前で指定できます。
イメージ説明
同じ名前でいくつか作る場合は"名前_0"とつけてコピペします。
そうすると"名前_0”、"名前_1"、2、3・・・と自動的に命名してくれます。
イメージ説明

縦幅、横幅などの値はオプション→LibreOffice Calc→全般にあるメトリックの使う単位をポイントにします。
イメージ説明
そしてボタンを設置するセル幅を指定します。今回は縦幅12.00pt,横幅65.00ptにしました。また、セルのサイズに合わせてボタンを作り、ボタンは縦に連続で並んでいます。
コンテキストメニューからセルサイズに合わせるをします。そして見栄えが良くなるよう調整したあとのボタン_0のサイズや位置はこんな感じです。
イメージ説明
あとは分かると思いますが、非表示のときはサイズを0に、表示するときはサイズを元に戻し位置も合わせます。このとき元の値を入れても元通りのサイズ(もしかしたら位置も)にはならない可能性があるので調整が必要です。

長くなりましたが、以上が解決法になります。

投稿2020/07/12 06:10

86chan

総合スコア14

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問