VBAの変数名と定数名

VBAで変数を利用しようとしても、どんな名前が適切なのか分からないと迷ってしまうので覚書。

変数名の例 説 明
tmp, temp Temporay (一時的な)。一時的な値をあつかう変数。
num, n Number (数値)。数値をあつかう変数。
str String (文字列)。文字列をあつかう変数。
buf Buffer (緩衝装置)。一時的な値を保管するための変数。
i, j くり返し処理と組み合わせて使う変数。ループカウンタ用の変数の定番。
cnt Counter (カウンター)。件数を数えるときの変数。
msg Message(メッセージ)。文字列を格納する変数。
flag flag (旗)。On (yes) / Off (no) など判定を格納する変数。
arr Array (配列)。配列をあつかう変数。
bk Workbook オブジェクト
sh Worksheet オブジェクト
foo, bar, hoge 適当なサンプルとしての名前。
○○Rng Rangeオブジェクトをあつかう場合
○○Sht Sheetオブジェクトをあつかう場合
my○○ 適当なサンプルとしての名前。
○○List 配列をあつかう場合。

参考

Office TANAKA – VBAの変数[変数の名前について] Office TANAKA - VBAの変数[変数の名前について]

変数関係 – VBレスキュー(花ちゃん) Visual Basic,VS6.0,VB6.0,サンプル,Tips 変数関係 - VBレスキュー(花ちゃん) Visual Basic,VS6.0,VB6.0,サンプル,Tips



スキルの習得にストーリーを加えるということ

『Excel VBA の神様』を読みました。VBAに関する内容どうこうよりも、技術の習得を目的とした書籍の中で紡がれるストーリーの役割について考えさせられました。



単に情報量を多くするだけなら、文章や表の方が密度が高い、枠組みや関係性を示したいならグラフでこと足りる。この書籍の中でストーリーやキャラクターが果たしている役割とは何だろうか?

これは、演劇を見ながら登場人物の人となりやストーリー、テーマを知っていく様に似ている。役者のダイアローグを聞きながら、その舞台、背景、それぞれの事情を類推していく。これは、余白を埋める行為であるし、自分が余白を埋めるために歩いた距離が、本当の意味で血肉になるということなんだろう。

登場人物の感情が動き、その感情に共鳴し、その場にある面白味のある知識とはいったい何なのかを咀嚼していく。一人黙々と学習したり知識を押し付けられるよりも、自分の心が動き、知識を追い求めていくので、理解が自分の知識構造に馴染みやすかったのだろう。

内容的メモ

以下は、VBAに関するメモです。

キーワードは小文字で入力しても大文字に変換される。そのため、小文字で入力し、大文字に変換されるかどうかで、記述があっているかを確認することができる。

キーワードを途中まで入力し、 [Ctrl] + [スペース] で候補を表示。

文字列は絶対に () で囲んではいけない。

オブジェクトの「.」は、助詞『の』の代わり。動詞は「メソッド」。

名詞(オブジェクト)を「の」の代わりに「.」でつなぎながら、最後に動詞(メソッド)で締めくくって文章を完結する。その文章が「ステートメント」で、ステートメントが集まれば「マクロ」になる。p101

動詞には『対象物』とか、『どのように』という補足情報が必要なケースがある。その補足情報を引数(ひきすう)という。メソッドと引数の間には『半角スペース』を空ける(文言やや変更)

名前を入れたり、色を変えたりすることを「オブジェクトのプロパティを書き換える」と表現する

プロパティの取得:変数 = オブジェクト.プロパティ

ワークシート関数のToday = VBA関数のDate。

& は文字連結演算子。半角スペースを前後に入れる。

VBAの基本構文の三つ、『メソッドの使い方』『プロパティの取得』『プロパティの設定』

変数を定義する

Dim x As Long
x = hoge

という形で変数を定義する。以下、調べた略称の意味。
Dim: Dimension. Long: 長整数型(変数の型)

登録解除できない「重要メール(と称した広告メルマガ)」への対処方法

不要なメールは受信したくないものです。一般的にメルマガであれば登録解除ボタンが文面の中にあり、「このメールマガジンは読まないから届かないようにしよう」と思えば、その手続きができます。一方で、重要なメールは企業から登録解除ボタンを設定せずに送信することができます。確かに、本当に重要なメールが手元に届かなかったら困りますね。問題は、重要なメールを装ったプロモーションやサイトへの誘導を目的としたメールがあることです。こうしたメールがスマートフォンで通知され、「大事なメールかな?」と思って急いで開くと無駄な情報メールでイライラ。。。これが非常に煩わしい。

この1か月での私に届く重要メールと称した不要なメールのタイトル

  • 保有ポイントのお知らせ【Ponta Web】
  • 「BIGLOBE30周年」感謝のご挨拶
  • ポイント加算のお知らせ
  • Scroll Shop☆お誕生日おめでとうございます
  • 【締切のご案内】楽天カードのお支払い方法変更は毎月20日まで(2016年09月17日)
  • カード利用獲得ポイントのお知らせ【楽天カード株式会社】(2016/09/17)
  • ★対象スタンプをお持ちです★エントリーをお忘れなく!
  • 【Hot Pepper Beauty】ポイント残高のご案内
  • 検針結果のお知らせ【○○電力】
  • 【楽天ポイントカード】利用&獲得ポイントのお知らせ

ほぼ、ポイント確認のメールです。

その他の事例

これが楽天のいう「重要なお知らせ」であるということが判明しました。すみません、いったいリボ払いへの変更勧誘と獲得ポイントのお知らせに広告を足したこのメールのどこが「重要なお知らせ」なのでしょうか・・・。

ということで、すべての楽天メールに対し1ヶ月間地道に配信停止処理を行った場合、それでもやはり2通/週程度は「重要なお知らせ」と位置付けられた広告付きメールが配信される、ということがわかりました。

すべての楽天メールに対し1ヶ月間地道に配信停止処理を行った場合、それでも配信される重要なお知らせとは何か/何通あるのか – ガジェット通信 すべての楽天メールに対し1ヶ月間地道に配信停止処理を行った場合、それでも配信される重要なお知らせとは何か/何通あるのか - ガジェット通信

注意点

これらのメールを全て迷惑メール報告をしてしまうことも手段の一つですが、そうすると必要な情報まで届かなくなってしまいます。一方で、スマートフォンの通知にこの手のメールが表示されると非常に煩わしいため、悩ましいところです。

私の対処

私はショッピング系のメールは基本的にヤフーメールで受信しています。そこで、古い方法ですがフィルタ機能を使ってみることにしました。タイトルに上記のワードを含んでいた場合には、ごみ箱に振り分けられるように設定しました。すると、スマートフォンでの通知に不要なメールのみが表示されなくなりました。

この方法は、実際にご自身のスマホやフリーメールで試してみると良いと思います。メールフィルタに設定した通りに、自分で自分のスマホにメールを送り、意図通りの挙動をすればその方法で良いという確証が持てます。ぜひ、お試しください。

デスクトップ壁紙に文章を入れる方法

デスクトップの壁紙に、文字情報を表示する方法を紹介します。

用途:ショートカットキー一覧、関数やコード一覧などをデスクトップに設定する

  • 短い文章であれば、画像ファイルをペイントで開いて文字を入力する

 

量の多い文章の作成方法

  • ワードで文章を作成する
  • デスクトップの背景にする画像をワードにペーストする
  • 画像の配置は「背面」にする
  • 画像を用紙スペースいっぱいに広げる
  • 文字色を見えやすく調整する
  • PDFとしてエクスポートする
  • PDFファイルを開く
  • [Ctrl] + [Print Screen] でスクリーンショットを撮影
  • ペイントに貼り付ける
  • プロパティで画像のサイズを調整
  • 保存
  • デスクトップに設定

入門者のExcel VBAがとっても良書

入門者のExcel VBAがかなり良い本だったので紹介します。


用語

まず、基本的なお話し。
VBAとは
Visual Basic for Applications(ビジュアルベーシック・フォー・アプリケーションズ、VBA)は、マイクロソフト社製のMicrosoft Officeシリーズに搭載されているプログラミング言語である。Visual Basic for Applications – Wikipedia Visual Basic for Applications - Wikipedia

VBAの本に書かれているマクロとは
マクロ (Macro) は「大きい」「巨大な」といったような意味の語であるが、コンピュータ関係では、アプリケーションソフトウェアなどの操作などといった、プログラミング言語と比較して粒度が大きい操作をまとめて自動化したりする機能を指して良く使われる。マクロ (コンピュータ用語) – Wikipedia マクロ (コンピュータ用語) - Wikipedia

要は、VBAというプログラミング言語で書かれたプログラムをマクロというようです。

覚え書き

以下は、自分にとって重要だった部分のメモです。

  • [Alt] + F8: マクロ画面表示
  • [Alt] + F11 : VBA起動
  • 初心者が実際にプログラムを書く場所は「標準モジュール」フォルダの「Module 1」:[挿入] → [標準モジュール] → [Module 1]ダブルクリック → タイトルバーに[Module1(コード)]と表示される。
  • Subプロシージャは命令文の“枠組み”
    Sub プロシージャ名()
    処理の内容
    End Sub
  • 命令文は[Tab]で字下げする
  • MsgBox: メッセージボックス
  • Subプロシージャ―はVBE上から実行可能 ▶ ボタン:VBE上の実行は命令文の動作確認に便利
  • 図形を右クリック[マクロの登録]で図形にマクロを設定できる
  • 「オブジェクト」:セルやワークシートなどExcel上にある“もの”の総称。オブジェクト名を暗記する必要はとりあえずなし。
    セル Range, ワークシート Worksheets, グラフ ChartObjects, オートシェイプ Shapes。
  • 「プロパティ」:セルやワークシートなどのオブジェクトの“状態”。データ Value、フォント、色 Color、サイズ、セルの幅 ColumnWidth や高さ、罫線Bordersなど。
  • プロパティで行える操作は「取得」(プロパティにある値を取りだす)と「設定」(プロパティに別の値を入れて内容を設定する)。
  • 「取得」: オブジェクト名.プロパティ名
    セルのデータはvalueプロパティで取得
  • 「設定」: オブジェクト名.プロパティ名 = 設定値
    セルのデータ設定は value = “文字列”
  • エラーメッセージ「コンパイルエラー」:書いたプログラムが書式に反している場合。「実行時エラー」:オブジェクト名やプロパティ名が間違っている場合。 ⇒ デバッグ:誤りがある行が黄色で強調される(その行だけでなく、前後の行もチェックする)
  • 親オブジェクト名.子オブジェクト名
  • 「メソッド」:コピー Copyや切り取りCut、貼付Paste、データの削除 ClearContents などのオブジェクトの“動作”のこと。
  • 「メソッド」: オブジェクト名.メソッド名
  • 比較演算子は、If関数と同じという認識で構わない
    値1 比較演算子 値2
  • = は比較演算子と代入演算子の両方で用いるが、意味合いは待ったっことなる
  • 条件分岐:指定した条件が成立するか、成立しないかによって、処理内容を使い分ける仕組み
    ステートメント(Statement: 陳述、陳述文、計算式)
  • 条件が成立する場合のみ処理を実行
    If 条件式 Then
    処理の内容
    End If
  • 条件が成立する/しないで、異なる命令文を実行
    If 条件式 Then
    処理の内容1
    Else
    処理の内容2
    End If
  • 複数条件に応じて命令文を実行させる場合 ElseIf
  • For…Nextステートメントの基本
    For 変数名 = 初期値 To 最終値
    処理の内容
    Next
  • 複数の文字列を組み合わせる時には、「&」演算子が必要

売上データシートから請求書を作成するマクロを作る演習でしたが、とても面白い。「&」と演算子と繰り返しの組み合わせ方など、非常に勉強になりました。