7-2■クリアボタンを設定してみよう!

第7章 電卓を作ってみよう!

さぁ、前回で想像でやってみた方はいかがだったでしょうか?

答え合わせを兼ねて、勉強していってみましょう。

 

では、まずは定義を考えてみましょう。

クリアボタンを押した時にクリアされる。

では、クリアとは具体的には?

計算結果に0が出ればとりあえず良さそうですよね?

 

function名をbutton_clearとして、スクリプトエディタに書いていってみましょう。

 

と、ここで私のコードを見る前に、自分で書いてみましょう。

えーと、A2セルを0にする。

A2セルは絶対参照でいいですよね?

getRangeでA2セルを指定して、そこにsetValueで0を入れる。

 

いや、そもそもこのアクションってマクロで出来るんじゃない?と気づいた人は答えが出たようなもの。

マクロで書いてコピーしちゃえばいいんです。

function myFunction() {

var spreadsheet = SpreadsheetApp.getActive();

spreadsheet.getRange(‘A2’).activate();

spreadsheet.getCurrentCell().setValue(‘0’);

};

これをbutton_clearにしちゃいましょう。

function button_clear() {

var spreadsheet = SpreadsheetApp.getActive();

spreadsheet.getRange(‘A2’).activate();

spreadsheet.getCurrentCell().setValue(‘0’);

};

ただし、これから先にまとめるのにマクロgsのところにあると不便なので、コードgsのところにしましょう。

 

そして、「C」のボタンを選択状態にして右上の方にある、縦に並んだ「・・・」のとこをクリックしましょう。

その選択肢の「スクリプトを割り当て・・・」を選びbutton_clearにしましょう。

これで、「C」ボタンを押したらA2セルが0になるようになりました!

 

でも、ちょっと待って。

クリアボタンを押した時ってそれでいいのかな?

 

ひょっとすると、計算画面以外のところに数字を書かれちゃうかも知れない。

それが残ってると邪魔になるし、A1セルの「計算画面」ってテキストも消されちゃうかも知れない。

クリアを押したら、最初の準備が出来ている状態。そんな感じにしたい。

 

じゃあ、定義を変えてみましょう。

一回、全部のセルのデータを削除して、A1に「計算画面」ってテキストを入れて、A2に「0」を入れる。

これをマクロで作ってコピーして・・・。

function button_clear() {

var spreadsheet = SpreadsheetApp.getActive();

var currentCell = spreadsheet.getCurrentCell();

var sheet = spreadsheet.getActiveSheet();

sheet.getRange(1, 1, sheet.getMaxRows(), sheet.getMaxColumns()).activate();

currentCell.activateAsCurrentCell();

spreadsheet.getActiveRangeList().clear({contentsOnly: true, skipFilteredRows: true});

spreadsheet.getRange(‘A1’).activate();

spreadsheet.getCurrentCell().setValue(‘計算画面’);

spreadsheet.getRange(‘A2’).activate();

spreadsheet.getCurrentCell().setValue(‘0’);

};

どうでしょう?これでクリアボタンは出来上がりです。

 

と言いたいところなんですが、後に必要になってくるので、説明は後回しでやっておいてほしいことがあります。

B1セルに「ロック」、C1セルに「ストック値」、D1セルに「計算式」の文字列。

B2セルに「0」を代入しておいて欲しいのです。

この状態をデフォルトにしておかないと、計算式に進んだ時にやり直しになってしまうので、説明後回しで申し訳ないですが、とりあえず下のコードを完成として入れておいてください。

よろしくお願いします。

function button_clear() {

var spreadsheet = SpreadsheetApp.getActive();

var currentCell = spreadsheet.getCurrentCell();

var sheet = spreadsheet.getActiveSheet();

/*すべてのセルデータを削除*/

sheet.getRange(1, 1, sheet.getMaxRows(), sheet.getMaxColumns()).activate();

spreadsheet.getActiveRangeList().clear({contentsOnly: true, skipFilteredRows: true});

/*1行目にテキストを代入*/

sheet.getRange(“A1”).setValue(“計算画面”);

sheet.getRange(“B1”).setValue(“ロック”);

sheet.getRange(“C1”).setValue(“ストック値”);

sheet.getRange(“D1”).setValue(“計算式”);

/*A2セルに0を代入*/

sheet.getRange(‘A2’).setValue(0);

/*B2セルに0を代入*/

sheet.getRange(‘B2’).setValue(0);

};

コメント

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