睡魔のブログ -6ページ目

睡魔のブログ

プログラマーとしての知識や趣味の情報、日常などを発信したいとおもっています!

どーも!睡魔です!

 

本日のテーマは「配列」と「For文」です!

 

今回は配列に格納した名前を

メッセージボックスに表示するマクロを作成してみます!

マクロの作成の仕方はこちらを参照してください!

 

 

 

一つずつ紹介していきますのでまずは配列から!!

 

1.配列ってなに??

  変数とは値を入れる箱のようなもの、と以前お話ししましたよね^^

  その箱が電車のように繋がっているとイメージしてください!

  それが配列です^^

  

  例えば3人分の名前を格納する変数を3つ宣言するよりも、

  長さ(箱の数)が3つの配列を1つ宣言する方が楽ですし、

  処理を書く時にも便利になります!

  

  実際に宣言してみましょう!

  

 

  宣言の仕方は

  Dim 配列名(配列の長さ - 1) As 型

  となります!

  

  配列の長さ - 1ってなに??ってなりますよね^^

  電車の場合は先頭から1両目、2両目、、、と数えますが、

  配列は先頭から0番目、1番目、、、と数えていきます

 

  ですから、配列の長さが3つ必要な場合は

  0番目、1番目、2番目となるので「2」を指定するわけですね!

  

  次は宣言した配列に名前を格納しましょう^^  

 

 

  格納の仕方は

  配列名(要素番号) = 格納したい値

  といった感じになります!

 

  配列のイメージは掴めましたか??

  次はFor文について紹介しますね!!

 

2.For文って何??

  For文とは同じ処理を繰り返し行いたいときに使う構文です!

  例えば、1.で作成した配列に格納した名前を1人ずつ

  メッセージボックスに表示したい場合、下記のようなコードに

  なります!

 

 

  今回の場合、表示するのが3つですのでまだ楽ですが、

  表示するデータ量が100とか1000になったとき、

  このコードを量産するのを想像するとゾッとしますよね^^;

 

  そういう時に便利なのがFor文です!

  下記のようにFor文を使って書き換えてみましょう!

 

 

  どうでしょうか?

  MsgBox が一つでよくなり、すっきりしましたよね^^

  

  For文の書き方は以下の通りです!

 

  For カウント用の変数 = 初期値 To 終わりの数

    処理

  Next カウント用の変数

  

  今回の場合は配列の要素数だけFor文を繰り返したいので

  初期値は配列の先頭の0、終わりの数は配列の最後の2

  となります!

 

  strName(i)のiの部分には現在のiの値が入るので

  1回目の時には初期値である0

  2回目の時には初期値+1の1

  3回目の時には2回目の値+1の2

  が代入されているので

  配列の先頭から順番に表示されるということですね^^

  

  ここまで出来たら実行してみましょう^^

  

  

  

 

  ちゃんと3人分表示されましたね!

 

 

いかがでしたでしょうか?

配列とFor文は組み合わせて使うことが多いので是非

使い方をマスターしてくださいね^^

 

今日はこの辺で!

 

イベントバナー

イベントバナー


 

どーも!睡魔です!

 

今日はVBAの関数の作り方についてご紹介したいと思います^^

 

関数の定義の仕方には2種類あります!

1.Subを使った定義

2.Functionを使った定義

 

今日は下記の記事で作成したマクロを改造して、

関数を定義していきたいと思います!

 

1.Subを使った関数の定義の方法は??

  実はもう皆さん、Subを使った関数を作っているんですよ!

  ご自分のマクロを見てみてください!

 

  3行目、Subで始まっていますよね??

 

  定義の仕方は、以下の通りです!

  Sub 関数名([引数名1] As 型,[引数名2] As 型,...)

  引数とは関数に渡す値のことです!

  関数は引数をもとに計算するのが基本です^^

 

  それでは足し算を計算する部分を関数化してみましょう!!

 

  Private Sub CalSum(....)の部分が関数を定義している場所です!

  「Private」というのは、このマクロ内でしか使えませんよ!

  というおまじないだと思ってください^^

 

  引数の中に「ByVal」と「ByRef」があるのがおわかりですか?

  ByVal:関数内で値を変えることができない引数

  ByRef:関数内で値を変えることができる引数

  このような違いがあるんですね!

  だからintRetには足し算の結果を格納することが

  できるってわけです!

  

  呼び出すときはCall CalSum(intLeft, intRight, intRet)

  となっていますね!

  「Call」とは戻り値が不要な関数を呼び出すときに使います^^

  戻り値に関してはFunctionを使った関数定義でお伝えしますね!

  それでは実行してみましょう^^

  はい!しっかり計算できていますね^^
  

  次はFunctionを使った関数の作り方に進みましょう!

 

2.Functionを使った関数定義の方法は??

  

  定義の仕方は、以下の通りです!

  Function 関数名([引数名1] As 型,...) As 型

  Subとの違いは一番最後に型を指定しているところです!

  Subと違い、Functionは戻り値を返すことができるんですね!

  最後に指定している型は戻り値の型です^^

  

  戻り値:計算した結果を関数にセットして返す値のこと

  ということです!

  

  というわけでFunctionを使って足し算する部分を

  関数化してみましょう!

 

  fCalSumがFunctionを使って関数定義したものです^^

  戻り値を設定するときは

  関数名 = 戻したい値

  というように書きます!

  ここでは足し算の結果を戻したいので、

  引数の足し算をしていますね!

 

  呼び出すときには、戻り値があるのでその格納先に代入するように

  書きます^^

  ここではintRetに戻り値を代入していますよね!

 

  それでは実行してみましょう^^

   

  こちらもしっかり計算できていますね^^

 

どうでしたでしょうか?

SubとFunctionの違いを理解していただけましたか??

うまく関数化することでプログラムの可読性がぐんっと上がります

上手に活用していきましょう^^

 

今日はこの辺で!

 

イベントバナー

イベントバナー


 

どーも!睡魔です!

 

以前の記事では変数を使って足し算の結果を

メッセージボックスに表示しましたね!

 

前回の記事はこちらから!

 

 

今回は定数を使って定数に入れた値を

メッセージボックスに表示してみましょう!

 

プロジェクトの作り方はこちらから!

※マクロ名は自由に付けてくださいね^^

 ちなみに僕は今回「ShowMsg」というマクロ名にしました!

 

こんな感じで、開発画面開けましたか??

それでは今日の本題に入りましょう!

 

・定数って何??

 定数とはあらかじめ値を格納しておき、その後の変更が

 できない入れ物のことを言います!

 箱に値を入れて鍵をかけるイメージですね^^

 

1.定数を定義してみよう!!

 

  このように定数はSubの上に定義します

  「Const」というのが定数の印です^^

  定義の仕方は

  Const 定数名 As 型 = 格納したい値

  となります!

  ちなみに変数と見分けがつくように

  定数は大文字のアルファベット表記で命名されることが多いです!

  そして、単語と単語の間は「_(アンダーバー)」で区切ります^^

 

2.String型とは何??

  今回定数にはString型を使っていますね!

  String型は文字列を格納するための型です^^

  VBAでは文字列を扱う場合は「"(ダブルクォーテーション)」

  で囲う必要があります

  ですから今回格納する値である「Hello World」は「"」で

  囲われているわけですね^^

 

3.メッセージボックスに表示してみよう!!

  

  メッセージボックスに表示するのは前回やりましたね^^

  ここまでできればあとはボタンを押すだけです^^

 

  ちゃんと定数に格納した値が表示できましたね^^

 

4.番外編

  Ⅰ.定数にセルに入力した値を格納することはできません!

    試しにこのコードを実行してみましょう^^

    このようなエラーが返ってきます!

 

  Ⅱ.定数は途中で値を書き換えられません!

    試しにこのコードを実行してみましょう^^

 

    このようなエラーが返って来ます!

 

変数と定数の違いは理解していただけましたか^^??

 

今日はこの辺で!

 

イベントバナー

イベントバナー


 

どーも!睡魔です!

 

緊急事態宣言が明けたことですし、

昨日はほんとに久しぶりに行きつけのダーツバー

行ってきました^^

 

昨日はオーナの誕生祭でなんと、トッププロ2人

来ていました!!

 

2人とも気さくな方で一緒にダーツしていただくことに!

 

僕はダーツの世界には疎いのですが、

後々聞いた話だと一般的に、

ダーツのプロの方と一緒に投げるにはその方の

イベントに参加する(もちろん有料)必要があるようで

しかも01するぐらいだそうです!

 

なかなかこんな機会はないとのことでした!!

そんな方々とマッチができたなんてとても光栄でした!

 

とても貴重な経験をさせていただきました^^

あ、結果はもちろん手も足もでませんでした( ´∀` )

 

トッププロの方とダーツしていて思ったのは

僕以外とのお客さんともずーっと投げていたし、

お酒も入っていたのにパフォーマンスが全然落ちないんですよね!!

 

ずーっと高いパフォーマンスを発揮している

 

笑っちゃうぐらいBullに入るしトリプルにも3本入れちゃう!

 

さすがプロだなぁと思いました^^

 

それと同時に

ダーツに限らず何かを極めている人ってメチャクチャカッコいいなと

思いました!

 

僕も何か極めていきたい、そう思わせてくれる一夜でした^^

 

今日はこの辺で!

 

イベントバナー

イベントバナー


 

どーも!睡魔です!

 

前回はマクロの枠を作るところまでできましたね!

まだ見ていない方はこちらからどうぞ!

 

 

では今日はExcelを閉じたところから前回のプログラムを書く

画面を表示するところから始めたいと思います^^

 

1.プログラムを書く画面を開こう!

  まずは前回作成したExcelを開きます^^

  
  上のほうに「コンテンツの有効化」というボタンがあるので

  クリックして有効にしてください!

 

  次に、前回作成した「ボタン」を右クリック

  →マクロの登録をクリック

 

  前回作成したマクロ名(SampleMacroSum)を選択

  →「編集」をクリック

 

  前回のプログラムを書く画面が表示されましたか?

  今日はここから実際にプログラムを書いてみましょう

 

2.何を作りたいのか考えよう!

  このフェーズ、結構重要です!!

  何を作るのかはっきりしていないと

  作成している最中に色々迷うことがでてきます!

  そうすると作業がなかなか進まなくなってしまうんですね^^;

 

  今回は下記のような機能を作成したいと思います!

  1.Excelにのセルに入力した2つの値を足し算する

  2.足し算の結果をメッセージボックスに表示させる

  

  このようにやりたいことをなるべく細かく区切って

  考えると後々プログラミングを書くこと(実装)が楽になってきます

 

3.プログラムを書いてみよう!!

  いよいよここからプログラム(ソースコード)を書いていきます!

 

  Ⅰ.変数を宣言しよう!

    変数とは実際の値を入れる箱のようなものだと

    イメージして下さい^^

    変数には、整数しか入れたくないもの

    文字列しか入れたくないものなどあります!

    それをで指定してあげるんですね^^

    

  Ⅱ.変数の宣言の仕方

    基本的には下記のようになります!

    Dim 変数名 As 型

    今回は足し算する2つの値の変数と結果用の変数の3つ

    宣言しましょう

    今回は整数の計算を想定しているので、Integer型を使います!

    こんな感じです!

    緑色の文字は「コメント」と言っていわゆるメモ機能ですね^^

    コメントの頭に「'」を付けるとコメントとして扱われます!

    ソースコードだけ書いていると見返したときに

    「これって何やってるんだっけ??」となることが多いので

    コメントは丁寧に入れていったほうがいいです!!

 

    あと変数(例えばintLeft)の「int」ってなんだ?と思った方!

    いい質問ですね^^

    これは型名の略称を変数の頭に付けています

    何故かというとソースコードを書いている時に

    「この変数の型ってなんだっけ?」となることがあるからです!

    変数名に型名を付けておけば型が一目瞭然なので

    可読性(読みやすさ)が格段にあがります

  

  Ⅲ.変数に値を入れてみよう!

    A1セルの値をintLeft、B1セルの値をintRightに

    格納してみましょう!

    こんな感じで書きます^^

    変数 = 格納したい値

    

    右辺、なんのこっちゃ?ですよね^^;

    詳しく解説していきます!

    Activesheet:現在カーソルが当たっているシートのことです!

    Cells:シートのセルを指定するときに使います

        Cells(行番号、列番号)です!

        行番号は上から1、列番号は左から1で始まります^^

    Value:値を指します!

    まとめるとintLeftの場合、

 

    「カーソルが当たっているシートの上から1番目、

    左から1番目の値をintLeftに格納してください

 

    といった感じになります^^

 

  Ⅳ.足し算しよう!
    先ほどよりはシンプルです^^

    先ほどと比べるとわかりやすいですよね^^

    

    あとはメッセージボックスに表示するだけ!

  

  Ⅴ.ッセージボックスに表示しよう!

    

    メッセージボックスに表示する関数があるので

    それを使用します^^

    MsgBox 表示させたいもの

    表示させたいものをダイアログで表示してくれます!

    

    さて、実装はこれで完了です!

    次は正常に動くかテストしてみましょう^^

 

.動くか確かめよう!

  A1セルに、B1セルにを入力→「ボタン」をクリック

 

  はい!ちゃんと計算されていますね^^

  「OK」ボタンをクリックすればダイアログは閉じます!

  おめでとうございます!足し算マクロの完成です!!

 

いかがでしたでしょうか?

前回の記事と合わせて読んでいただければマクロの作り方の

一連の流れを理解いただけたかと思います!

 

これからもプログラミングの記事は書いていきますので

一緒に勉強していきましょうね^^

 

今日はこの辺で!

 

イベントバナー

イベントバナー