LibreOffice : まず4マス問題から、目指すは100マス計算

4マス計算
4マス問題

Excelで百マス問題見つけたので、それを参考にLibreOfficeのCalcで作ってみようと思います。

4マス問題ダウンロード

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) ‘//背景色

セル背景色変える

 

セルにランダムな値を入れる

関数だと新しい問題作成のとき、再計算でしないとだめ
再計算させる方法がBasicで見つからないので、最初からBasicでやります。

値の代入:~.getCellRangeByName(“A1”) = 値
乱数の生成:  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

コメント

タイトルとURLをコピーしました