親父の隠れ家

親父の隠れ家

三十路を迎える親父が隠れて記事を書き始めました。

【VBA】演算子について

f:id:CMY0630:20170708172716j:plain

計算に使う+やら-のことを演算子というのだけれども、よく使うので簡単にまとめておこうと思います。

 

目次

 

 

演算子のあれこれ

 

 

+

言わずと知れた足し算。「a = b + c」であればbとcを足した値をaに代入となります。

 

 

 

-

こちらは引き算。「a = b - c」であればbからcを引いた値をaに代入となります。

 

 


*

 

こちらは掛け算。「a = b * c」であればbとcを掛けた値をaに代入となります。
初めて計算をした際にキーボードを見て「掛け算どこー?」となったことがある人は多いはず。

 

^

べき乗。「a = b ^ c」であればbのc乗をaに代入となります。

 

 

 

/

 

割り算。「a = b / c」であればbをcで割った値をaに代入となります。この時の値は浮動小数点数。こちらも掛け算同様、初めて計算をした際にキーボードを見て「割り算どこー?」となったことがある人は多いはず。
ちなみにcが0の場合は実行時エラーが発生します。

 

浮動小数点数について書こうと思ったのですが、どうにも簡単にまとめるための言語能力が僕には不足しているので申し訳ないのですがここでは割愛します。

 


割り算。「a = b ¥ c」であればbをcで割った値をaに代入となります。この時の値は整数値。/同様、cが0の場合は実行時エラーが発生します。

 

 

Mod

 

余りです。「a = b Mod c」であればbをcで割った際の余りをaに代入となります。

 

=

「a = b」であればbの値をaに代入となります。

 


試しにやってみよう

 

Sub test()
   
    MsgBox 5 + 5
    MsgBox 5 - 5
    MsgBox 5 * 5
    MsgBox 5 ^ 5
    MsgBox 5 / 5
    MsgBox 5 \ 2
    MsgBox 5 Mod 2
   
End Sub

 

上記を実行すると計算された値がメッセージボックスに表示されます。


演算子の紹介で代入を使っているのでせっかくの機会なので書いてみます。


Sub test()

    Dim a As Integer
    a = 700
    MsgBox a
    a = a + 77
    MsgBox a
 
End Sub


実行するとまず「700」が表示され、2回目のメッセージボックスで「777」と表示されます。

 

 

おわりに

近くに電卓がない、スマホの電卓を使うのが面倒、ファイル名指定からの「calc」で電卓開くのが面倒…

 

VBAに限らずExcelでの四則演算にて+-*/をよく空きセルを使って計算したりするので覚えておくと便利です。

【VBA】処理速度を上げるApplication.ScreenUpdating = False

f:id:CMY0630:20170703215726j:plain

スマホやPCでWEBページを見ている際、なんならアプリの処理が遅くてイライラすることありますよね。

 

ちなみに僕のスマホ通信制限が月2GBとか鬼のようなプランなので大体毎月中旬から泣いてます。

 

VBAではコードで処理速度を速くしてくれるコードがあるので覚えておくととても便利なんのでご紹介します。


目次

 

 


1行目に書くApplication.ScreenUpdating = False

 

直訳するとExcelの画面更新を停止せよ」という命令文です。


抑制(False)、復活(True)するもので、今回のように抑制(False)されている間は画面が全く更新されません。


更新されないから処理の速度が上がるというわけです。

 

ちなみに途中で画面更新が必要になる場合は途中に復活を挟むこともできます。逆も然りです。

 

長々と入力するのが大変?

ご存知の方も多いかと思いますがVBAでは入力候補のリストが出てくるのでフル入力しなくてOKです。


ちなみに入力候補リストを出すショートカット

 

Ctrl + Space

 

f:id:CMY0630:20170703220828p:plain


入力候補が出たら、例えば「Application」は、「ap」という2文字を入力すれば2つ目の候補に出てきます。


マウスに手を移すのは煩わしいので「↓(キー)」で選択し、Tabを押すと入力補完されます。

 

続けて「.(ドット)」

↓Tab不要

「sc」(ScreenUpdatingは候補の一番上)

↓Tab

「=」「↓(Falseが一番上にある)」

 

これで一瞬で入力が完了します。

長いし面倒かもしれませんが最初はゆっくり慣れてもらえれば良いかと。


この入力補助については今回に限らず、よく使いますのでこちらも習慣にしてしまいましょう。

 

入力補助を使うメリット

きちんと書いているとツールを作る上では作業効率が下がります。

 

入力補助の機能を使うと

 

「フル入力するのが面倒なくらい長いやつを瞬殺できる(今回のApplicationとか)」

 

「手入力で起こりがちなスペルミスなどが発生しなくなる(ScreenUpdatingをScreenUpdateと間違えたり)」

 

などのメリットがあります。

 

 

まとめ

Sub test()
   Application.ScreenUpdating = False

End Sub

 

これが基本形体と覚えてしまいましょう。

 

英単語覚えるのが苦手だからVBAも覚えられない…という人も「Ctrl + Space」を使えばスペル自体はうる覚えでも大丈夫。

アンケートモニター登録

【VBA】If~Thenステートメントを使って条件分岐をしてみよう

f:id:CMY0630:20170702173731p:plain

ifは英語の意味そのままで「もし~だったら」のことで、VBAの制御構文の中では一番基本的なものだと思います。

 

条件分岐と言われるやつですね。

 

初めて条件分岐という言葉を使った時にはかっこよさのあまりに震えたものです。

 

今回はシンプルなものを作ってどんなものかと知ってもらえればと思います。

 

目次

 


If~Thenステートメントって?

冒頭でも触れましたが、If~Thenステートメントは条件によって処理を振り分けるときに使います。

 

場合によって演算子や論理演算子を使った条件式を指定したりすのですが、今はその辺はおいておきましょう。

 

(イメージ)
If 条件 Then  (Falseの場合) 「※1」へ飛ぶ
↓(Trueの場合)
処理A

End If
↓  ※1


 

一番シンプルなIfステートメントだとこんな感じです(あくまでイメージ)。


「条件」が成り立つとき(Trueの場合)は「処理A」を実行し、「条件」が成り立たないとき(Falseの場合)は何もしないといったもの。

 

書き方

 

 

If 条件式 Then
 条件式が真(True)の場合に実行される処理
Else
 条件式が偽(False)の場合に実行される処理
End If

 

真(True)の場合はThen以降の処理を実行、

偽(False)の場合はElse以降の処理を実行するというものです。

 


実際にやってみよう!

 


数字を使うと分かりやすいかと思います。

 

Sub お試しIF()
    Dim a As Integer
    a = 100
   
    If a > 50 Then
   
    MsgBox "aは50より大きい"
   
    Else
   
    MsgBox "aは50より小さい"
   
    End If
   
End Sub

 

 

解説

Dim a As Integer
a = 100

 

「変数aには整数が入ることを宣言」「aに100を代入」


If a > 50 Then
MsgBox "aは50より大きい"

「もしaが50より大きかったらメッセージボックスで"aは50より大きい"と表示して!」   
   

Else
MsgBox "aは50より小さい"

「もしaが50より小さかったらメッセージボックスで"aは50より小さい"と表示して!」


今回の場合、変数aには100という整数が入っているので50よりも大きいです。

なので実行結果は「"aは50より大きい"」です。

f:id:CMY0630:20170702172818p:plain

(実行結果)

 

 

まとめ

今回の例ではコード内で完結するものですが、条件を「If Range("A1").Value = 100 Then」などにすると「もしA1に100が入っていたら…」となり実践で使えそうな匂いがしてきますね。

 

条件分岐などを行い始めると何だかプログラムっぽい気がします。

 

アンケートモニター登録

【雑記】花瓶がないので代用品を作ってみた

f:id:CMY0630:20170706185148p:plain

娘と散歩をしていると「パパー!お花咲いてるね!」なんてことをよく言っているなと、ふと思い、花が好きなんだなと。

 

今度野花じゃなくイケてる花を買って帰ろうと思い立ったのですが

 

我が家に花瓶がないことに気付く。

 

娘に花をプレゼントしようと目論む前に10年来の嫁には未だかつて花をプレゼントしたことがないのでまずそっちじゃないかと思ったりもしたのですが、気持ち悪がられるか、ない事疑われる羽目になるんじゃないかと全然喜ぶ姿が想像できなかったので却下。

 

娘にパパありがとう!と言われたい。

 

とはいえ、わざわざ花瓶を買って失敗しても嫌なので花を家に置く事についての様子をまずは伺いたい。


何か家にあるもので花瓶の代わりになるものはないかと考えていたところ、最初に思いついたのは酒瓶。

 

 
f:id:CMY0630:20170706201635j:image

 

酒瓶に花が差さっている様子を想像してみたのですが、不謹慎ながら道端のお供えというかご冥福をお祈りするようなやつにしか見えない。

 

コレは良くない。

 

仮に花を置くこと自体にウェルカムな雰囲気があったとしてもコレは良くない。

頭湧いてんの?とか言われかねない。


仮置きとはいえそこそこ見栄えが良さそうなものをチョイスしたい。

 

何か他に代わりになるものはないかと家の中を見渡していると良さそうなもの見付けた。

 


f:id:CMY0630:20170706201701j:image


香水の空き瓶。

先日なくなって捨てなきゃなぁと思っていてスッカリ忘れていたやつ。


これだ!と思ったよね。

 

酒瓶より全然マシ。

 

採用されれば地球にも優しい。

 

素晴らしい。


上のキャップみたいなやつ外せば花入るじゃん!


超余裕とか思っていたんだけど、キャップみたいなやつ素手じゃ全然ビクともしないの。ただ手が香水臭くなっただけ。


外れた!と思ったら最上部が外れただけ。



f:id:CMY0630:20170706201737j:image


これはどうにもならんなぁとペンチとかないと無理…

 

そういえば昔実家を出る時に父親に「道具がなけりゃ困ることあるだろ」とか言われて持たされたっけと思い出し捜索。



f:id:CMY0630:20170706201800j:image


これをペンチと呼ぶのか僕は知らないけど心強い仲間ができたことには間違いない。

いざリベンジ(この家に越してから初めて使ったよ)。



f:id:CMY0630:20170706201828j:image


正直道具使えば瞬殺かと思っていたのだけど予定と違い少し苦戦する。

 

テコの原理ってオシャレな技術を使うにもペンチ(?)を立てれば瓶が傷付く(ティッシュやタオルを挟むのは面倒)。

 

ゴリ押しならぬゴリ引きで強行突破を図る。



f:id:CMY0630:20170706201846j:image


やっとの思いで取れたんだけど、まだ残ってて…


こいつは牛乳瓶のキャップより少し手強いくらいのレベル。



f:id:CMY0630:20170706201900j:image

f:id:CMY0630:20170706202018j:image

 

分解し終わって疲れ満足しちゃった。今主役(花)の購入とかもう結構どうでもいい…

 

気が向いたら花を買って帰ろうと思います。

 

花瓶(仮)はあるからな。

【転職】美味しそうな話には裏があるのはどこでも同じ

 

f:id:CMY0630:20170702144920j:plain

応募時点で募集要項は満たしている(実力は満たしていない)のでダメ元で大手グループさんへ応募してみたところ書類選考は無事通過。

 

3年半のブランクが負い目というか卑屈の根源というか正直ビジネスレベルでのプログラミングは自信がない。


受かったら儲けもんくらいの感覚でいたものの、いざ面接の案内が届くと

 

 

「何故?」感がスゴイ。

 

 

大手さんだからといって油断していると後ろからグサリ…なんてこともありそうなのでそういうわけで気持ちを整理するために書いてみます。

 

 

 

大手企業出資だから安定している?

お仕事内容を漁っていると案件自体は出資会社の案件が多い模様。

ただこれを安定と呼ぶのかは微妙だと感じる。


結局のところ親会社の下請けで、グループ内でお金グルグル回しているだけだよね?

そんなことを考えていたものの現職の自動車業界も同じようなもんかと気付く。

 

そう思うと別になんてことないのかな?

 

 

親会社の天下り先?

 

結構な賑わいを見せるスレッドを多く見かけました。

 

「○○な企業まとめ」みたいなのでなく社名でのスレッドが多く、いよいよ怪しくなってきた。

 

鵜呑みにするのはあれなので話半分に読み進めたものの、

 


「親会社の天下り先」

「試用期間のみ契約社員という話だったのに正社員雇用にならなかった」
「給料は上がらない」

「誰でも良いから派遣する企業」

などなど…

 


嘘か真かはさておき、これ読んでチャレンジするほど勇猛果敢ではない。


特にブランクによりスキルに不安がある身としては「誰でも良いから派遣する企業」という言葉はズバリ該当しているような気がして震えた。

 

 

こうしてWEB検索したら直ぐに色々知れちゃうわけだけど、昔はこうもいかなかったことを思うとおぞましい。

 

入ってビックリ真っ黒でした!なんてことは日常だったのでしょう。

そもそもWEBで応募なんてこともなかったわけで、郵送だったり電話だったり直接乗り込んだり…。

 

今の時代で良かったと有り難味を感じます。

 

 

まとめ

 

書いてて気持ちが整理されたのか、エンジニアとしてブランクがある人間が選り好みして申し訳ないような気もするのですが、選考は辞退しようと思います。

 

あらかじめネガティブな要素があることが分かっているところにわざわざ飛び込むのもバカな話。

 

SE現役時代、実は出資している親会社さんの方のプロジェクトに参画していた時期があり、かなりお世話になったので良い印象を持っていたんです。


当時完全にインフラエンジニアで軸となっていたのはMySQLLinuxにも関わらず、開発要員として送り込まれ右も左も分からない中一からC言語を教えてもらったりして。

 

よく飲みに連れて行ってもらったり送別会まで開いてくれたりと数あるプロジェクトの中でもかなりの高待遇だったんです。

 

あれかな、外部の人間だったから良くしてくれていたのかな。接待だったのかな。

 

その他のグループ会社の求人もあまり良い噂がなく、実際入ってみたら大したことなかったなんてこともあるかもしれないけど、火のないところには煙は立たないとも言うし。

 

そんなこんなで30歳の転職は結構慎重になるもんだなと感じる今日この頃でした。

 

(追記)

f:id:CMY0630:20170703171552p:plain

 

辞退メールを送ったらとっても丁寧な返信が返ってきました。

既に何社か辞退させてもらっているものの、辞退に対してもきちんとした対応を見せる企業とそうでない企業があります。

 

面接時に落とす人に対しては良い対応をして悪い印象を持たせないようにするというのはよく聞く話ですが、辞退者に対しても同じなんでしょうね。