2021年08月07日

10万円ではじめるプログラミング講座 10

全ての国民に10万円が行きわたると言う事で、様々な事情の
方がいらっしゃるかと思いますが、それが出来る人に向けて、
Excelを活用したプログラミング講座を執筆する事にしました。
「ゲームをやった時間を記録して集計出来るプログラム」を
自分で作れるようになる事を目標にしています。

まさか、この題名が浮く事になる事態になるとは、想像して
いませんでした。それはつまり「経済的な殺戮」だからです。

前回迄作成していたプログラムの仕上げ作業をお届けしよう
と思います。この講座でつくるプログラムの正しく動作する
版にはあって、まだ紹介していない部分が少しあります。

前回つくったプログラムを開きます。ファイル名は
「den-dentaku3.xlsm / den-dentaku3.xls」として
保存したと思います。

ファイルを開くと、まっさらなExcelブックに「セキュリティ
の警告 マクロが無効にされました。」と言う表示(表現は
バージョンによって違うかも知れません)が出現している事
が確認出来ると思います。忘れずマクロを有効に設定します。

プログラムの改造を始める前に、前回つくった内容を消して
しまう事のない様、ファイル名を変えておきましょう。

ツールバー等にある「名前を付けて保存」をクリックします。

ファイル名は「den-dentaku4.xlsm / den-dentaku4.xls」等
が良いでしょう。

ファイルを開いた状態で、「Alt+F11」を押します。
「Microsoft Visual Basic」の画面が出て来ると思います。
そのまま「F7」を押して、「コード」画面を開きます。



ProcessKeyPressの Select Case KeyAscii と End Selectの
間のCase Elseの前に、以下のコードを書き込みます。

Case Asc("%") '%
If cmJoutai <= cmAllClear Then Exit Sub
Select Case cmJoutai
Case cmKekka
Case cmNyuryoku1
'☆9
Case cmNyuryoku2
'☆10
End Select


'☆9
dblNyuryoku1 = ConvertNyuryoku()
strNyuryoku = CStr(dblKekka * dblNyuryoku1 / 100)
UpdateDisplay


'☆10
dblNyuryoku2 = ConvertNyuryoku()
Select Case strEnzanshi
Case "+", "-"
strNyuryoku = CStr(dblNyuryoku1 * dblNyuryoku2 / 100)
Case "*", "/"
strNyuryoku = CStr(dblNyuryoku2 / 100)
End Select
ProcessKeyPress (Asc("="))



ProcessKeyPressの Select Case KeyAscii と End Selectの
間のCase Elseの前に、以下のコードを書き込みます。

Case Asc("X"), Asc("x") '1/x
If cmJoutai <= cmAllClear Then Exit Sub
Select Case cmJoutai
Case cmKekka
'☆11
Case cmNyuryoku1
'☆12
Case cmNyuryoku2
'☆13
End Select
UpdateDisplay
Case Asc("Q"), Asc("q") 'sqrt
If cmJoutai <= cmAllClear Then Exit Sub
Select Case cmJoutai
Case cmKekka
'☆14
Case cmNyuryoku1
'☆15
Case cmNyuryoku2
'☆16
End Select
UpdateDisplay


'☆11
If dblKekka = 0 Then
strError = "計算出来ません"
cmJoutai = cmJoutai * -1
Else
dblKekka = 1 / dblKekka
End If


'☆12
dblNyuryoku1 = ConvertNyuryoku()
If dblNyuryoku1 = 0 Then
strError = "計算出来ません"
cmJoutai = cmJoutai * -1
Else
dblNyuryoku1 = 1 / dblNyuryoku1
strNyuryoku = CStr(dblNyuryoku1)
End If


'☆13
dblNyuryoku2 = ConvertNyuryoku()
If dblNyuryoku2 = 0 Then
strError = "計算出来ません"
cmJoutai = cmJoutai * -1
Else
dblNyuryoku2 = 1 / dblNyuryoku2
strNyuryoku = CStr(dblNyuryoku2)
End If


'☆14
If dblKekka < 0 Then
strError = "計算出来ません"
cmJoutai = cmJoutai * -1
Else
dblKekka = dblKekka ^ 0.5
End If


'☆15
dblNyuryoku1 = ConvertNyuryoku()
If dblNyuryoku1 < 0 Then
strError = "計算出来ません"
cmJoutai = cmJoutai * -1
Else
dblNyuryoku1 = dblNyuryoku1 ^ 0.5
strNyuryoku = CStr(dblNyuryoku1)
End If


'☆16
dblNyuryoku2 = ConvertNyuryoku()
If dblNyuryoku2 < 0 Then
strError = "計算出来ません"
cmJoutai = cmJoutai * -1
Else
dblNyuryoku2 = dblNyuryoku2 ^ 0.5
strNyuryoku = CStr(dblNyuryoku2)
End If



「F5」キーを押して動作確認してみましょう。



「コード」の先頭にカーソルを持っていき(コンボボックス
から (General)(Declarations) を選ぶ操作でも良い)、以下
のコードを探します。

Private cmJoutai As CalcMode
Private strNyuryoku As String '入力中の数値を記憶
Private strEnzanshi As String '数値の前に押した演算子を記憶(+-*/)
Private dblNyuryoku1 As Double '演算子の左の数字を記憶
Private dblNyuryoku2 As Double '演算子の右の数字を記憶
Private dblKekka As Double '結果の数値を記憶
Private strError As String 'エラーとして表示する文字列

これを次の様に書き換えます。

Private cmJoutai As CalcMode
Private strNyuryoku As String '入力中の数値を記憶
Private strEnzanshi As String '数値の前に押した演算子を記憶(+-*/)
Private dblNyuryoku1 As Double '演算子の左の数字を記憶
Private dblNyuryoku2 As Double '演算子の右の数字を記憶
Private dblKekka As Double '結果の数値を記憶
Private blnNyuryoku As Boolean 'True:入力を受け付ける False:受け付けない
Private strError As String 'エラーとして表示する文字列

太字が今回追加したコードです。



忘れないうちに、ここまでつくって来たプログラムを保存し
ましょう。ツールバー等にある「保存」をクリックします。

 

チョー・デンタク社に勤めるYさんは、地方公共団体向けに
導入実績のある「電卓アプリ」の開発を担当する技術者です。

Yさんは、これ迄度々ノース・ビレッジ社の担当者から依頼
事を受けて来ました。担当する「電卓アプリ」が、鉄道大手
ジュニア社の券売機に導入される事になり、チョー・デンタ
ク社内では開発作業が進んでいたのですが…Yさんは、再び
ノース・ビレッジ社の担当者から「急ぎの依頼事がある」と
の事で呼び出しを受けました。

CD: チョー・デンタク社のYさん
NV: ノース・ビレッジ社の担当者

CD: 急ぎの依頼事って何ですか。

NV: 今年春から、全国の病院や診療所の受付にIT機器が配備
  されている事が、業界の話題になっていると思うのだが。

CD: ええ、イカレた目をしているウサギのゆるキャラが宣伝
  している「アレ」が、健康保険証として使えるって言う
  やつですね。IT機器を受注するのは大手で、自分達には
  縁の無い世界だと思っていますが。

NV: そうか。実は、件のIT機器にも、チョー・デンタク社の
  「電卓アプリ」を導入する事になった。待ち受け画面に
  電卓を表示して、会計時に使えたら便利だろ。

CD: え、そうなんですか。一体どういう裏があるのでしょう。

NV: 分かっているじゃないか。話が早い。ひと言で言うなら、
  「裏口を仕込んで欲しい」と言う事だ。

CD: と言いますと。

NV: 携帯電話の位置情報が集められているのは知っているか。

CD: 最近ニュースでよく見ますね。「同意を得ている」との
  説明がついていますけれども。

NV: そうだな。まあ、表向きの説明は全部嘘だ。同意なんて
  関係無く、すべての情報は町内に集められている。

CD: そうだろうと思いました。

NV: 昔の携帯電話は基地局からの大まかな距離ぐらいの精度
  でしか位置が分からなかったが、いまの携帯電話にはGPS
  がついている。裏口もついているから、携帯電話を持つ
  国民の居場所は、簡単に分かる。

CD: そうなんですか。でも、持っていない人もいますよね。

NV: そうなんだ。そこで登場したのがAI顔認識カメラによる
  居場所特定の仕組みだ。タクシーのドライブレコーダー
  に偽装したAI顔認識カメラが登場した。登録した人物が
  AI顔認識カメラで検知されると、位置と時間が通知され
  履歴が記録される仕組みだ。いまや全国で走るタクシー
  のドライブレコーダーはドライブレコーダーに偽装した
  AI顔認識カメラだ。同じ仕組みはバスにも広がっている。

CD: へぇ。誰も反対しなかったんですか。

NV: 実は、すべて我々が仕組んだ事でもあったのだが…ある
  女性芸能人の言質をとった事が蟻の一穴となった。以来、
  狂信的な支持者と考えが深まっていない未成年を中心に、
  AI顔認識カメラを容認する層が出来たと言う事だ。

CD: それと今回の依頼事とどう言う関係があるのですか。

NV: IT機器を使う国民の診療履歴が、町内に集められる事は
  もちろんなのだが、IT機器を使わない国民もいるだろう。
  それを見越して、タクシーやバスにも導入されているAI
  顔認識カメラによる居場所特定の仕組みを導入出来る様、
  裏口を仕込んで欲しいのだ。

CD: そう言う事なんですね。

NV: いま労働集約型の労働をわれわれの協力企業に集約する
  極秘の計画が進められている。先日迄行われていた国を
  挙げてのお祭り騒ぎは、ひとつの舞台仕掛けだったのだ。

CD: と言いますと。

NV: お祭り騒ぎの裏方で、お祭り騒ぎを支える労働集約型の
  労働についてある会社が独占して受注出来る様な仕組み
  があった。もちろん、われわれの協力企業だ。仕掛けは
  それだけじゃないが、お祭り騒ぎに注意を集めている間
  に、仕組みを書き換えているのだ。

CD: へぇ。それと今回の話とどう言う関係があるのですか。

NV: お祭り騒ぎに沿って踊らない人がいるだろう。それどこ
  ろか、極秘の計画の存在に気付き、構造を見抜き、警戒
  を呼びかける活動を始める人もいるだろう。こういった
  人を追い詰める為に診療履歴の情報が大いに役立つのだ。

CD: へぇ。…なるほど。

NV: それだけじゃない。協力企業が中小の会社を買収する際、
  どの会社に営業をかければ良いか判断するのにも役立つ。

CD: へぇぇっ、そうなんですね。

NV: 最初はIT機器に対する警戒心もあるだろうから疑われる
  様な事はせず大人しくしているが、警戒心が薄れた頃に
  は導入したいと思っているのだ。

CD: ところで、急ぎの依頼事と言うのは何故ですか。

NV: なるべくIT機器の納入迄に滑り込ませたいのだ。我々も
  コンサルティング事業の立ち上げがあって忙しいところ
  なのだがな。ソフトウエアは、アップデートの仕組みを
  使って後から送り込む事も出来るが、裏口を含む「電卓
  アプリ」を後から組み込んだら、怪しまれるだろう。

CD: ・・・(言葉を飲み込む)。分かりました。

 
posted by miraclestar at 08:09 | Comment(0) | 日記 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
※ブログオーナーが承認したコメントのみ表示されます。