
変数の型とは何かを学びます。変数の型はよいコードを書くのに欠かせませんので、しっかり学んでいきましょう。
変数の型を使うとバグを避けられる可能性が上がる。ということを解説しています。
変数の型にはいくつか種類があります。大きく分けると「値型」と「オブジェクト型」です。
それぞれどのようにちがうのかを確認します。
実際に文字列型変数に値を代入します。
文字を入れた場合、数字を入れた場合どうなるのか? がわかります。
「変数の初期値」についても確認します。
ブール型(Yes/No型)の初期値と、ブール型は数値に変換(またはその逆)できることを学びます。
整数型・長整数型・通貨型それぞれに格納できる値の範囲を学びます。
範囲を超えた場合どうなるか? も実演します。
オブジェクトの具体例、値型との違い、オブジェクト型使用方法の考え方を解説します。
総称オブジェクト型と固有オブジェクト型の違い、それぞれの利点・欠点を学びます。
インテリセンスが働かないのはどのようなときか? を解説します。
データ型変数に値を代入する二通りの方法を学びます。
コード上で代入
セルの値を代入
オブジェクト型変数に格納するとき値型と大きく違う点、注意点を学びます。
Worksheet型とRange型を組み合わせて使う方法も軽く触れます。
オブジェクト型に値を代入するとエラーになる、という実演も行います。
マイナーな型宣言方法である「型宣言文字」を学びます。
現代では使うことは殆どありません。
しかし、まれにネット上に「型宣言文字」を使ったサンプルコードがあります。そんなコードに出くわしたときに「???」とならないようになります。
変数の型を確認する二通りの方法のうち、ローカルウィンドウで確認する方法を学びます
変数の型を確認する二通りの方法のうち、TypeName関数で確認する方法を学びます
値を日付型に変換する方法を学びます。
シリアル値から変換
文字列から変換
値を整数型に変換する方法を学びます。
文字列を変換
小数点を含む数値を変換
小数点を含む数値を変換するときに
どのように丸められるのか?
型が扱える範囲を超えたときにどうなるのか?
をあわせて確認します
数値を含む文字列を変換するVal関数の使い方(うまくいくとき、うまくいかないとき)を学びます。
数値および文字列をブール型に変換するときのルールを学びます
通常の変数はプロシージャが終了すると値は破棄されます。
ここではプロシージャ終了後も値を保持できる「静的変数 (Static)」の使い方を学びます。
変数名をつけるときの基本的な考え方を学びます。
また、変数名(英語の)をつけるときの大文字小文字の使い方5種類を解説します。
ここまで学んだ内容を使って
縦に氏名が・横に月・交点に残業時間、という表を以下のような表に変換(別シートに転記)しましょう
A列に氏名
B列に月
C列に残業時間
「全角」の記号を「半角」の記号に変換し、別シートに転記してみましょう。
捜査対象になるものを「オブジェクト」といいます。
そのオブジェクトにはどのようなものがあるのかを学びます。
同じタイプのオブジェクトの集合体を「コレクション」といいます。
セルやシートもコレクションです。
他にどのようなものがあるのか、身近なものを例に取りながら解説します。
セルやシートをコレクションとして扱う方法を実演します。
具体的には「For Each構文」でループしてみます。
For Eachの詳しい使い方は後のレクチャーで学びます。
コレクションの中の特定もオブジェクトを指定する方法を学びます。
といっても、今まで普通に行っていたことを別の角度から見るということになります。
オブジェクトの「メンバー」と「プロパティ」について学んだことを整理してみましょう。
オブジェクトのメンバー(親・子・同レベル)にの操作方法を学びます。
「コレクション」にもプロパティがあります。
それを使って何ができるのか? を学びます。
「メソッド = 命令」の構文を整理してみましょう。
メソッド実行時の「条件 = パラメータ」の指定方法を学びます。
まずはパラメータ名で指定する方法です。
ファイルのフルパスを取得する方法を学びます。
フルパス取得はプログラミングでは欠かせない手法です。是非覚えておきましょう。
コレクションのプロパティ・メソッドについて学んだことを復習してみましょう。
プロシージャを分割すると
メンテナンスが容易に
コードが読みやすく
コードを再利用しやすく
なります。
F8系ショートカットキーで以下の操作を行えます
ステップイン
ステップアウト
ステップオーバー
カーソル位置まで一気に実行
F2系ショートカットキーで以下の操作を行えます
対象プロシージャの定義元に飛ぶ
呼び出し元に戻る
Withステートメントを使うと同じオブジェクトを対象にしたコーディングを省略できて便利です。
どのように使うか学びます。
Withステートメントは重ねがけできます。
Sheet + Rangeオブジェクトを例に学びます。
都道府県が「東京都」のときだけ市区町村名を表示する、という例で Do Loopを学びます。
0001から0999まで文字列を生成する方法例にDo Loopを学びます。
String関数はたまに便利に使える場面があります。覚えておいて損はありません。
無限ループさせる方法と、無限ループを抜ける方法と、
無限ループ中でもフリーズしなくなる方法を学びます。
これ以上ループする必要はない、というときにループを抜けると処理高速化が期待できます。
どのように抜けるのか? を学びます。
「列幅自動調整」を例にループ中に無駄な処理を抜ける実演を行います。
Do Loop中にループを抜ける方法を学びます。
Do Loopの項で学んだことを復習してみましょう。
Select Case文はIF文と同じように、条件分岐に使います。
Select Caseの書き方、IF文とどのように使い分ければよいのか?
を学びましょう。
たとえば、90以上、70~89、69~60というように条件分岐の範囲を指定する方法を学びます。
その他、使用頻度は高くありませんが、Select Caseでは数値以外にも「A~J」や「あ~こ」のような文字の範囲も指定できます。
複数条件をOrで判定するときはIF文よりもSelect Caseに利点があります。
また、Select Caseは判定対象が固定されるので記述ミスによるバグになりにくい、という特性もあります。
こうした特性を理解し、どのように使い分けるのがベターなのか? を学びましょう。
For Eachとは「コレクション」をループで回すための構文です。
どのような動きになるのか?
どのように記述するのか?
注意点
を解説します。
便利な使い捨てマクロの作り方その1
選択中のセルの値と書式設定を操作。
すでに何回か登場していますが、選択中のセルの列幅を自動調整するマクロを作ります。
非常に重宝しますのでおすすめです。
For Eachで選択中のセルをループするときに、オートフィルタで非表示になっているセルを無視するマクロの書き方を学びます。
すべてのシートをループしてセルの目盛線を非表示にします。
他人に見せるときに目盛線が非表示たと多少見栄えが良くなるのでおすすめです。
コレクション中の特定のオブジェクトだけを操作する方法を学びます。
ループの中で特定の物だけを狙い撃ちして処理できるようになるのでマクロの幅が広がります。
各店舗から送られてくる残業時間集計表ファイルを一つのエクセルファイルにまとめてみます。
まとめるときにはデータ分析しやすい(ピボットテーブルを利用できる表の形)に整形してまとめる手法も学びます。
取引先ごとに取引金額に応じて新しいシートに帳票(残高確認書)を作成します。
また、作成した帳票シートをすべて削除するマクロを作ります。
私達は日々PCやスマホで何かを検索しています。
同様にExcelでも何かを検索することがよくあります。
VBAでは検索を行う方法には数種類あります。それぞれの方法とそれらの使いこなし術を学びましょう。
セルに入力された値を検索する「Find」メソッドの概要を解説します。
実際にコーディングしながらFindメソッドの動きを確認します。
また、Findメソッドは「見つからなかったとき」に注意が必要なので、その時必要な処理も合わせて確認します。
FindとVlookupの速度を比較します。
合わせて、速度比較で使うTimer関数の使用法も少し解説します。
オートフィルタがかかって非表示になっているセルは検索対象になりません。
検索するためにはフィルタを解除する必要があります。
ここでは
どのようにフィルタを解除する方法
フィルタが設定されていない、フィルタがかかっていないときのエラー回避
を学びます。
VLookup関数は2種類あります。
Application.VLookup
WorksheetFunction.VLookup
この2つの実行速度を比較してみます。
VLookupで検索値が見つからないとエラーになりますが、それを回避する方法を確認します。
検索値を受け取る変数をVariant型にする
CStr関数でErrオブジェクトを文字列型に変換する
IsError関数でエラー判定する
Errオブジェクトでエラー判定する
をそれぞれコードを実行しながら学びましょう。
インターネットで検索すると変数名の後に As Longとか、As Stringとか書いてあるけど、なんだろう?
VBAで業務を自動化できるのは知っているけど、エクセルを開く作業そのものを自動化したい
各支店からバラバラに送られてくるエクセルファイルをまとめる・集計するのが大変
シートに入力されている情報をもとに複数のエクセルファイルを自動的に作りたい
シートに入力されている情報から複数の PDF ファイルを自動的に作りたい
便利なマクロを自分で作って使っているが、それを呼び出す作業が面倒
セルの値を検索するのにFor Next文を使っているが、表が大きくなったり、複雑になったりすると検索に時間がかかる
よく使うコードをコピペするのが面倒くさい
こうしたお悩みをお持ちであればこのコースを学ぶことで解決できるようになるかもしれません。
私が日々VBAを使って業務を効率化するの中で感じた上記のような疑問をしつこく、しっかり解説しながらプログラミングの 基礎知識を学べます。
プログラミングの書籍では、変数の型の説明、ループ構文などの文法について解説していても、それをどのように業務に活かすか? について解説している書籍はそう多くはありません。 (おそらく紙幅の都合だと思いますが)
そこで、このコースでは文法的知識に加え実際どのようにそれを活用するか? ということを意識してVBAによる業務改善方法をしつこく・しっかり解説をします。