
Excelで百マス問題見つけたので、それを参考にLibreOfficeのCalcで作ってみようと思います。
LibreOfficeの関数表
日本語 | 関数名 | 関数詳細説明 |
---|---|---|
乱数 | RAND() | 0以上で1より小さい乱数 0.765763193654787 |
乱数(整数) | RANDBETWEEN(a,b) | a~bの間の整数を返す |
RANDBETWEEN(1,10) 1~10までの乱数取得
黄色い部分に設定します。
自動で再計算しないように設定する
赤矢印のようにたどり、「自動計算」のチェックを外します。
チェック外さないと、答え入力セル値変わるたびに、問題も変わってしまいます。
外すと「F9」押すまで、問題はそのまま。
答えのセルを非表示にする
行・列はすべてを非表示にしてしまうようです。特定のセルだけは無理みたいです。
背景色と文字色同じにし、見えなくしました。
表示したい時どうする?マクロBasicでなく簡単にするには
LibreOffice Basicでセル背景色を変更
Option Explicit '// 変数宣言必要 Sub Main Dim oDoc As Object Dim oCell As Object oDoc = ThisComponent.CurrentController.ActiveSheet '//--------------------------- oCell = oDoc.getCellByPosition(10,3) oCell.CellBackColor=RGB(0,0,0) '//背景色 End Sub
これだと、まだ一つのセルのみです。
セル範囲だと:CellRange
oCells = oDoc.getCellRangeByPosition(10,3,11,4)
oCells.CellBackColor=RGB(0,0,0) ‘//背景色
oCells.CellBackColor=RGB(0,0,0) ‘//背景色
セルにランダムな値を入れる
関数だと新しい問題作成のとき、再計算でしないとだめ
再計算させる方法がBasicで見つからないので、最初からBasicでやります。
値の代入:~.getCellRangeByName(“A1”) = 値
乱数の生成: int(Rnd*10 )
乱数の生成: int(Rnd*10 )
int: 整数部分のみ取り出す。

ボタン押すと、問題新しくなります。
Sub Qstart() '//問題新規 Dim oSheet As Object Dim oCell As Object Dim i as integer oSheet = ThisComponent.CurrentController.ActiveSheet For i=0 to 1 oSheet.getCellByPosition(1,i+3).value=int(Rnd*9+1) oSheet.getCellByPosition(i+2,2).value=int(Rnd*9+1) Next End Sub
文字の色を白に
oCell_1.CharColor = RGB(255,255,255) '//文字色 White
正解のところ、背景色を変える
Sub Answer_Check '//解答Check Dim oSheet As Object Dim oCell_1, oCell_2 As Object Dim i,k As integer oSheet = ThisComponent.CurrentController.ActiveSheet for i=0 to 1 for k=0 to 1 oCell_1 = oSheet.getCellByPosition(10+i,3+k) '//解答 oCell_2 = oSheet.getCellByPosition(2+i,3+k) '//入力値 if oCell_1.value = oCell_2.value then oCell_1.CellBackColor = RGB(255,0,0) '//背景色 正解用 oCell_1.CharColor = RGB(255,255,255) '//文字色 White oCell_2.CellBackColor = RGB(255,0,0) '//背景色 正解用 oCell_2.CharColor = RGB(255,255,255) '//文字色 White end if next next End Sub
セル範囲を移動する (動画)
新しく3X3(9マス)にしようと思いレイアウトを変更します。
グリッドが表示されない
「直接設定した書式の解除」を選択
セルの枠線がなにか指定されていて見えなくなっています。それをリセットすればOK
コメント