Home
VBAプログラム

● 分数計算プログラム

【分数の四則演算プログラム】

 コンピューターって計算をする道具なのに、分数で答えを求めたい時にあまり活用できなかったりしませんか?関数電卓で、気の利いたものは分数計算の機能が付いていたりしますが、桁数等いろんな制限があったりしますよね。一応、約数を100個までにしています(約数が、この値を超えると、エラーが出て止まるはずです)ので制限はありますが、その値(Dim MEAS(100)の部分)を変えれば、計算できる分母分子の桁数を増やすこともできます。著作権を放棄する訳ではありませんが、サイズの小さいプログラムですし改造は自由としますので、気が向いた方はより良いプログラムの作成にチャレンジしてみてください。(ただし、短いプログラムですので、説明のコメントはほとんど書いていません。)

プログラム名 内容
約分をするマクロ 分数の約分をします。
和を求めるマクロ 分数の和を計算します。
差を求めるマクロ 分数の差を計算します。
積を求めるマクロ 分数の積を計算します。
商を求めるマクロ 分数の商を計算します。

bunsu.exe←ファイルをダウンロードしたい方はこちらをクリックして下さい。そのまま実行すると、分数計算.xls(エクセル2000のファイルです)が出てきます。もちろん無料で、危険なコマンド等は含んでいませんが、実行結果については責任を持ちかねる場合も出てくるかもしれませんので、前もってご承知おき下さい。

● 成績処理関係のプログラム

【定期テスト用成績処理プログラム】

 学校では、最初N88BASIC版の市販ソフトを使って処理していましたが、細部が学校のシステムに会わなかったので、Multiplanの関数を使っての処理、dBASEスリーでのプログラムによる処理を経て、入力時の手軽さからLotus123のマクロによる処理に移り、Excelのマクロでの処理になりました。一度、Accessですべての処理を行った方が、データの一貫性があって良いと考えて、AccessのVBAでプログラムしましたが、入力の手軽さとプリントフォームの自在さから、現段階ではExcelを用いた方がメリットが大きいという判断から、Excelでの処理に戻しました。
 ここでのマクロやプログラムは、最初はExcel95あたりで組んだと思いますが、Excelでは、新ヴァージョンに移行する際、関数等を含んでいるワークシートは不具合が生じるようだったので、Excel97時には、『averageやsum、rank、stdev等の関数は使わずに、すべてを数値データの形で保存できるシステム』を目指して、プログラミングしました。実際、Excel97→Excel2000の移行の際は、問題は生じませんでした。(関数を使ってあるものは、同様の症状が出たようです。)ということで、Excel2000→ExcelXpは確認していません(ExcelXpが手元にありません)が、恐らく問題ないと思います。
 また、ファイルサイズについては、実力テストと定期テスト(学期成績、5段階評定を含む)に分ければ、200名くらいのデータなら、ワークシートとプログラムを含むそれぞれの1年分が、FD1枚ずつに収まるサイズになります。(それぞれ1,014KBと1,077KBでした。)成績処理でカイルを登場させるため、Accessが入ってないPCではエラーが出ます。

プログラム名 内容
クラス成績印刷マクロ クラス別成績の印刷をします。
グラフ グラフの元になる分布表の初期設定をします。
プラス 現在、カリタス女子校に居られる小寺哲氏が、関数で作ったシステムをマクロに直したものです。前回の成績との比較をするプログラムです。
個人票印刷マクロ 個人の成績票の印刷をします。
初期マクロ1 成績処理を終えたシートを保存して、作業シート内をクリアするプログラムです。
初期マクロ2 人数自動計算、出席番号順や成績順の並べ替え等のプログラムです。
成績処理 このプログラムのメインです。成績処理対象の人数を計算し、平均や順位、偏差値等をつけていきます。
赤点・青点マクロ 赤点や青点を判定して、シートをカラフルにするプログラムです。
通知表へのコピー 通知票のファイルに、定期テストの成績をコピーしていきます。
評定5段階 5段階評定のシートの処理です。


【通知票】

 定期テストや学期成績、実力テスト等のデータをワークシートに保存しておき、通知票を作成するプログラムです。

プログラム名 内容
通知票プログラム シートをクラス人数分作成したり、通知票の表紙や内容を印刷するプログラムです。


※ プログラムを手直しして使っていただくことはO.K.ですが、ワークシートはマクロやプログラムに合うように作っていただかなければエラーになります。また、著作権を放棄した訳ではありませんので、ご了承下さい。