iLEDについて

Javaサンプル

Netbeans

Libre Office Basicマクロ

その他


Author of This Site:
M. Kom. (kom9kmail@gmail.com)
Spam対策のため@マークは全角になっていますから、メール送信時には半角にしてください。

100マス計算3年割算編問題作成ワークシート

3年生の割算では、はじめは被除数の十の位が除数よりも小さいパターンを学び、次にそのような制限が ない割算に進むようです。そこで、このファイルでは両方のパターンの問題が作成できるように、ワークシートを 分けてあります。制限のない場合は次のような問題表示になります。

fig

100マス計算割算問題作成シート

被除数の十の位が除数よりも小さいパターンは次のようになります。

fig

被除数の制限あり

問題作成自体は関数をセルに設定することでできるのですが、解答の表示・非表示を 切り替えようとするならば、BASICで操作することになります。
セルに設定する関数は、
C2セルの被除数の生成は、=ROUNDDOWN((RAND())*80+10,0)
E2セルの除数の生成は、制限付きの場合は
=ROUND(RAND()*ROUNDDOWN((99-C2)/20,0)+ROUNDDOWN((C2)/10,0)+1,0)
制限なしの場合は
=ROUNDDOWN(RAND()*7.5+2,0)
G2セルの解答(商と余り)の生成は、
=FIXED(INT(C2/E2),0)&" ・・・ "&FIXED(MOD(C2,E2),0)
といった感じでしょうか。
あとは生徒への配布のためには解答を非表示にして印刷することになります。その処理は表の下部に ボタンを用意して切り替えるようにしています。ボタンそれぞれには、Sub ChangeWhiteChar (文字色白)と Sub ChangeBlackChar (文字色黒)を割り当てています。また、異なる問題を生成できるように再作成ボタン でSub recalc を呼び出し、シートの再計算を行うことで異なる問題を生成します。
Sub ChangeWhiteChar、Sub ChangeBlackChar、Sub recalc は以下に示します。
またCalcのファイルも掲載しておきます。
100マス割り算 LibreOffice Calcファイル 100DivQuiz.ods

<< SDメモリUSBメモリ激安 上海問屋 >>

' by Kom. 2013
Sub ChangeWhiteChar
    Dim oDoc as Object, oCtrl as Object
    Dim oDispatcher as Object 
    dim oProp(0) as new com.sun.star.beans.PropertyValue    
    Dim oSheet as Object 
    Dim oSelRange as Object 
    
    oDoc = ThisComponent.CurrentController.Frame
    oDispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

    '自動更新をOFF    
    oDispatcher = createUnoService("com.sun.star.frame.DispatchHelper") ' 
    oProp(0).Name = "AutomaticCalculation" 
    oProp(0).Value = false ' ON : true / OFF : false 
    oDispatcher.executeDispatch(oDoc, ".uno:AutomaticCalculation", "", 0, oProp())
    
    'Active Sheetを取得
    oSheet = ThisComponent.CurrentController.ActiveSheet
    
    'G,M,S,Y=6,12,18,24
    ThisComponent.addActionLock()   ' 処理速度改善のため画面更新抑制
    for i=6 to 24 step 6  'G,M,S,Y列に対して色変更
        oSelRange = oSheet.getColumns().getByIndex(i) 
        oSelRange.CharColor = RGB( 255, 255, 255 )
    next i
    ThisComponent.removeActionLock()  ' 画面更新抑制解除

End Sub

Sub ChangeBlackChar
    Dim oDoc as Object, oCtrl as Object
    Dim oDispatcher as Object 
    'Dim oProp(0) as new com.sun.star.beans.PropertyValue
    dim oProp(0) as new com.sun.star.beans.PropertyValue    
    Dim oSheet as Object 
    Dim oSelRange as Object 

    oDoc  = ThisComponent.CurrentController.Frame
    oDispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

    '自動更新をOFF    
    oDispatcher = createUnoService("com.sun.star.frame.DispatchHelper") ' 
    oProp(0).Name = "AutomaticCalculation" 
    oProp(0).Value = false ' OFF : false 
    oDispatcher.executeDispatch(oDoc, ".uno:AutomaticCalculation", "", 0, oProp())
    
    'G,M,S,Y=6,12,18,24
    'Active Sheetを取得
    oSheet = ThisComponent.CurrentController.ActiveSheet
    
    ThisComponent.addActionLock()   ' 処理速度改善のため画面更新抑制
    for i=6 to 24 step 6  'G,M,S,Y列に対して色変更
        oSelRange = oSheet.getColumns().getByIndex(i) 
        oSelRange.CharColor = RGB( 0, 0, 0 ) '黒色
    next i
    ThisComponent.removeActionLock()  ' 画面更新抑制解除
End Sub

Sub recalc
    dim oDoc  as object
    dim dispatcher as object
    dim oProp(0) as new com.sun.star.beans.PropertyValue    

    oDoc = ThisComponent.CurrentController.Frame
    dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
    dispatcher.executeDispatch(oDoc, ".uno:Calculate", "", 0, oProp())
    setAutoRecalc
    
End Sub

Sub setAutoRecalc
    '自動計算ON
    Dim oDoc as Object, oCtrl as Object
    Dim oDispatcher as Object 
    dim oProp(0) as new com.sun.star.beans.PropertyValue    
    
    oDoc  = ThisComponent.CurrentController.Frame
    oDispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

    oDispatcher = createUnoService("com.sun.star.frame.DispatchHelper") ' 
    oProp(0).Name = "AutomaticCalculation" 
    oProp(0).Value = true 
    oDispatcher.executeDispatch(oDoc, ".uno:AutomaticCalculation", "", 0, oProp())
End Sub

OpenOfficeマクロプログラミング―「Writer」「Calc」「Base」…OOoをBasicで便利に! (I・O BOOKS)

Lenovo ノートPC ThinkPad