Quantcast
Channel: プログラミング
Viewing all articles
Browse latest Browse all 8726

ExcelVBA本格入門 Chapter5 - StudyLog

$
0
0

学習日:2024/07/11

参考書:ExcelVBA本格入門 技術評論社(著者 大村あつし)

5-1から5-4まで(P112-126)

 

【学習内容のまとめ】

  • ブック名をメッセージボックスに表示する

    myWBName = Workbooks(1).Name → 最初に開いたブックのNameプロパティを取得して変数に代入

    MsgBox "最初に開いたブックは” & myWBName & "です” → 変数に格納された値を表示

    ※ブック名をメッセージボックスに表示すること自体は変数を使用せずとも可能

  • MsgBox関数で文字列と変数を連結する

    固定文字列は"”(ダブルクォーテーション)で囲み、&演算子で連結する

    ※変数は””で囲まない

    文字列を連結するときは&演算子を使い、数値を加算するときは+演算子を使う

    MsgBox 1 + 1 → 実行結果は2

    MsgBox 1 & 1 → 実行結果は11

  • 演算子

    VBAでは4種類の演算子が用意されている

    ※Not演算子はWithステートメントの中でよく使われる

    Valueプロパティは省略して記述することも可能だが基本的には省略すべきでない

 

  • 自分流の名前付け規則を作る

    重要な事項3点

    • 変数であることが明確である名前を付ける
    • マクロのタイトルやVBAのキーワードと一致しない名前を付ける
    • どのような値を格納するための変数なのかが連想できる名前を付ける

    VBAのキーワードにはmyで始まるものがないため重複しないためおすすめ

    ※マクロのタイトルとかぶってないかは注意

    ※日本語の変数名はつけないほうがベター

 

  • 変数の明示的な宣言とは?

    スペルミスがあるマクロ

    myWBName = Workbooks(1).Name

    MsgBox "最初に開いたブックは” & myWBNama & "です” → 変数名をスペルミスしているためメッセージボックスには変数に格納した値は表示されない

VBAはキーワード以外の用語をすべてユーザーが独自に定義した変数と判断して処理をするため、スペルミスではエラーがでない

そのため、あらかじめ変数を宣言することで、宣言されていない用語はエラーが出るように設定する → 変数の明示的な宣言

  • 変数を明示的に宣言する(1) - Dimステートメント

    宣言されていない変数(スペルミス)をエラーと判断する機能を設定するには、Dimステートメントで変数を宣言する

  • 変数を明示的に宣言する(2) - Option Explicitステートメント

    さらに、モジュールの先頭にOption Explicitステートメントを記述すると、Dimステートメントで宣言した変数以外の用語を使うことができなくなる → スペルミスがエラーでわかるようになる

    Option Explicitステートメントを自動的に記述する

    VBE起動 → ツール → オプション → 編集パネルの変数の宣言を強制するにチェックしてOK

 

  • 変数のデータ型を宣言する

    Dim myWSCnt As Integer → データ型をInteger(整数型)で宣言

    myWSCnt = ActiveWorkbook.Worksheets.Count → 整数型以外のデータ型の値が入るとエラーが出る

    MsgBox myWSCnt

    Dim 変数 As データ型 → Asキーワードを使った変数のデータ型を宣言する構文

  • データ型の宣言によりプログラミングミスを回避する

    宣言された型と違う種類のデータを変数に代入すると、マクロ実行時に変数のデータ型が一致しないというエラーを返す

  • 主なデータ型

    • バイト型(Byte) → 0~255の正の整数値
    • ブール型(Boolean) → TrueまたはFalse
    • 整数型(Integer) → -32,768~32,767の整数値
    • 長整数型(Long) → -Integerよりも桁の大きな整数値。2,147,483,648~2,147,483,647
    • 通貨型(Currency) → Longよりも桁の大きな小数点を含む数値。-922,337,203,685,477.5808~922,337,203,685,477.5807
    • 単精度浮動小数点数型(Single) → 小数点を含む数値
    • 倍精度浮動小数点数型(Double) → Singleよりも桁の大きな小数点を含む数値
    • 日付型(Date) → 日付と時刻
    • 文字列型(String) → 文字列
    • オブジェクト型(object) → オブジェクトへの参照
    • バリアント型(Variant) → あらゆる種類の値
  • 文字列型 - String

    Dim myWBName As String → 変数を文字列型で宣言

    myWBName = Workbooks(1).Name

    MsgBox "最初に開いたブックは” & myWBName & "です”

    ※文字列型で宣言した変数に数値を代入しても文字列として扱われる

  • バリアント型 - Variant

    整数、文字列、日付などあらゆるデータを格納できるが、どのようなデータを入れる変数であるかがわからなくなるため基本的には使用しないデータ型

    データ型を省略して変数を宣言すると、その変数はバリアント型になる

  • オブジェクト型(1) - Setステートメント

    Dim myWSheet As Worksheet → myWSheetをオブジェクト型の変数として宣言

    Set myWSheet = Workbooks("Dummy.xlsx").Worksheets(”Sheet2”) → Setステートメントを使ってオブジェクト型変数にオブジェクトを代入

    myWSheet.Range(”A1:D10”).Value = "ABC” → 変数myWSheetに対してオブジェクトを代入しているのでRangeを使うことができる

    ※Setステートメントは変数にオブジェクトを格納するためのキーワード

  • オブジェクト型(2) -固有オブジェクト型と総称オブジェクト型

    オブジェクトの種類を特定して宣言する → 固有オブジェクト型 → エラーを発見しやすいなどのメリットがある

    Dim myWBook As Workbook

    Dim myWSheet As Worksheet

    Dim myCell As Range

    オブジェクトの種類を特定せずに宣言する → 総称オブジェクト型

    Dim myWBook As Object

    Dim myWSheet As Object

    Dim myCell As Object

  • 複数の変数を1行で宣言する

    Dim myWBCnt As Integer, myWSCnt As Integer

    ※データ型の宣言は1つの変数に対して1つずつ宣言する、同じデータ型でもまとめて宣言するということはできない

    昨今の風潮として、大は小を兼ねるということでIntegerはLong、SingleはDoubleと大きな値を扱えるデータ型のみを使う場合もあるが、それで問題はない


Viewing all articles
Browse latest Browse all 8726

Latest Images

Trending Articles