「自動クイックヒント」を使いこなそう(その1) - Excelマクロ・VBA

エクセルマクロ・VBAでプログラムを書いているとき、引数の順番とか、引数のデータ型に迷ったり、名前付き引数の名前を正しく書けなかったり、といったトラブルはありませんか?
例えば、こんな感じ。

  • Left関数の第一引数って、文字列だったっけ?数値だったっけ?
  • Sortメソッドで並べ替えするとき、第一条件って、「KeyA」って書くんだっけ?「OrderA」って書くんだっけ?

今日は、そんな問題を回避するための、分かれば便利なテクニックをご紹介します。
まずは、これからご紹介するテクニックを利用可能な状態になっているかどうか、設定の確認から。

開発環境(Visual Basic Editor 略称VBE)のメニューバーで、[ツール] → [オプション]を選択します。 auto_quick_hint1

「編集」タブに、「自動クイックヒント」というボタンがあります。 チェックが入っていることを確認します。
(デフォルトの設定のままなら、入っているはずです) auto_quick_hint1_2

では、Left関数でも書いてみますか。
サブプロシージャを、ひとつ作ります。
以下まで、書いてください。

Sub hoge()  
      Dim s As String s = left  
End Sub  

そうして、leftのあと、カッコ「 ( 」を書きます。
そうすると、以下のように、メッセージがでてきます。
小さくて黄色いヤツ。
auto_quick_hint1_3

Left(String, Length As Long)とのこと。
これ、どういうことかというと...ざっくり言うと、

  • Left関数の第一引数は、String、つまり、「文字列」だよ
  • Left関数の第二引数は、Length As Long、つまり、「長さ」だよ。この引数で渡すデータは、「Long型」、つまり、「整数として解釈し得る値だよ」
  • そして、今、Left関数の第一引数を入力中だよ

という意味です。
赤字になっているのが、今扱っている引数に関する部分。
ふんふん、なるほど。

てことで、ひきつづき、以下まで書いてみる。

Left("あらのよろし",  

すると、今度は、表記がこうなりました。
auto_quick_hint1_4
Left(String, Length As Long)となっている。これは、

  • Left関数の第一引数は、String、つまり、「文字列」だよ
  • Left関数の第二引数は、Length As Long、つまり、「長さ」だよ。この引数で渡すデータは、「Long型」、つまり、「整数として解釈し得る値だよ」
  • そして、今、Left関数の第二引数を入力中だよ

ということです。
こんな感じに、関数を書くとき、その引数を教えてくれるんですね。
便利です ヾ(´ー`)ノ

Left関数について、Microsoftの公式サイトで調べてみました。

Left 関数

文字列の左から数えて指定した数の文字を含むバリアント型 (内部処理形式 String の Variant) を返します。

構文:Left(string, length)

Left 関数の構文には、次の名前付き引数があります。

パ ー ツ 説明
string 必須。 左から文字列を返す元となる 文字列式。
string に Null が含まれている場合は、Null が返されます。
length 必須。Variant (Long)。 返す文字数を示す数値式。
0 の場合、長さ 0 の文字列 ("") が返されます。 文字列内の文字数以上の場合は、 文字列全体が返されます。

赤太字(+斜体)の部分と表が、この関数の引数について解説している部分。
やはり、渡す引数は「String, Length」ですね。
Lengthについては、よく読んでみると、「Long型として解釈し得る値を指定しろ」という趣旨のことが書いてあります。
Sort等の「メソッド」でも、同様です。
参考までに、下記にSortメソッドのヘルプも貼りつけておきます。 ヾ(´ー`)ノ

Range.Sort メソッド

名前空間: Microsoft.Office.Interop.Excel
アセンブリ: Microsoft.Office.Interop.Excel.dll

指定した範囲にセルが 1 つだけ含まれている場合は、ピボットテーブル レポート、範囲、またはアクティブな領域を並べ替えます。

パーツ 説明
Key1 省略可能 なオブジェクト。
テキスト (ピボットテーブル フィールドまたは範囲名) またはオブジェクト ("Dept" または Range Cells(1, 1) などの最初の並べ替えフィールド。
Order1 省略可能 XlSortOrderです。
Key1で指定したフィールドまたは範囲の並べ替え順序。
次のいずれかの XlSortOrder 定数:xlDescending を指定できます。 Key1降順で並べ替えます。
Type 省略可能 なオブジェクト。
並べ替える要素を指定します。 この引数は、ピボットテーブル レポートを並べ替えるときにのみ使用します。 次のいずれかの XlSortType 定数:xlSortLabels を指定できます。 ピボットテーブル レポートをラベルで並べ替えます。xlSortValues。 ピボットテーブル レポートを値で並べ替えます。
Order2 省略可能 XlSortOrderです。
Key2で指定したフィールドまたは範囲の並べ替え順序。 ピボットテーブル レポートの並べ替えには使用できません。
次のいずれかの XlSortOrder 定数:xlDescending を指定できます。 Key2降順で並べ替えます。
Key3 省略可能 なオブジェクト。
3 番目の並べ替えフィールドを、テキスト (範囲名) または Range オブジェクトで指定します。
この引数を省略した場合、3 番目の並べ替えフィールドはありません。
ピボットテーブル レポートの並べ替えには使用できません。
Order3 省略可能 XlSortOrderです。
Key3で指定したフィールドまたは範囲の並べ替え順序。 ピボットテーブル レポートの並べ替えには使用できません。 次のいずれかの XlSortOrder 定数:xlDescending を指定できます。 Key3降順で並べ替えます。
Header 省略可能 XlYesNoGuessです。
先頭の行に見出しを含めるかどうかを指定します。 ピボットテーブル レポートの並べ替えには使用できません。
次のいずれかの 定数:xlGuess を指定できます。
XlYesNoGuess Microsoft Excel でヘッダーがあるかどうかを判断し、ヘッダーがあるかどうかを判断します。
xlNodefault (範囲全体を並べ替える必要があります)。
xlYes。 (範囲全体を並べ替えてはいけません)。
OrderCustom 省略可能 なオブジェクト。
この引数は、ユーザー設定の並べ替え順のリスト内の番号を示す、1 から始まる整数です。
OrderCustomを省略 すると、通常の並べ替えが使用されます。
MatchCase 省略可能 なオブジェクト。
大文字 と小文字を区別する並べ替えを行う場合は True。 False を 指定すると、大文字と小文字が区別されない並べ替えを実行できます。
ピボットテーブル レポートの並べ替えには使用できません。
Orientation 省略可能 XlSortOrientationです。
並べ替えの方向を指定します。 次のいずれかの XlSortOrientationを指定できます。
定数: xlSortRows 行で並べ替えます。xlSortColumns 列単位で並べ替えます。
SortMethod 省略可能 XlSortMethodです。
並べ替えの種類を指定します。 選択またはインストールされている言語の設定 (たとえば、日本語) によって、これらのいくつかの定数が使用できない場合があります。
次のいずれかの各文字のXlSortMethod で並べ替えることができます。
xlStroke xlPinYindefault 中国語の発音表記の順で並べ替えます。
DataOption1 省略可能 XlSortDataOptionです。
Key 1でテキストを並べ替える方法を指定します。 ピボットテーブル レポートの並べ替えには使用できません。 次のいずれかの 定数:xlSortTextAsNumbers を指定できます。
XlSortDataOption テキストを並べ替えの数値データとして扱います。
xlSortNormaldefault。 数値データとテキスト データを別々に並べ替えます。
DataOption2 省略可能 XlSortDataOptionです。
Key 2でテキストを並べ替える方法を 指定します。 ピボットテーブル レポートの並べ替えには使用できません。
次のいずれかの定数:xlSortTextAsNumbers を指定できます。
XlSortDataOption 並べ替えの数値データとしてテキストを扱います。
xlSortNormaldefault 数値データとテキスト データを別々に並べ替えます。
DataOption3 省略可能 XlSortDataOptionです。
Key 3 でテキストを並べ替える方法を指定します。 ピボットテーブル レポートの並べ替えには使用できません。
次のいずれかの定数:xlSortTextAsNumbers を指定できます。
XlSortDataOption 並べ替えの数値データとしてテキストを扱います。
xlSortNormaldefault 数値データとテキスト データを別々に並べ替えます。

なお、「自動クイックヒント」という機能は、自作の関数についても同様に機能します
なので、普段から、自作の関数を作るときも、引数のネーミングには気をつけましょう。
極端な例ですが、上記の自作関数であれば、引数の名前も、「s, i1, i2」とかよりも、以下のようにしたほうが数段勝ります。
auto_quick_hint1_8

引数には、可読性の高い名前を!
自作関数を作るとき、引数の名前からはどの引数にどういう値を入れるべきか分かるようにしておかないと、その関数を呼び出すマクロを書くとき、いちいちその関数を書いたところまで見にいって確認しなくてはなりません。
今回紹介したサンプルでは近くにあるから迷いませんが、これが、その自作関数が別プロシージャにあったり、同一モジュール内でも、遠くにあったりすると、いちいち確認するのがかなり面倒になります (´・ω・`)

あと、この「自動クイックヒント」という機能。
人によっては、「自動パラメータヒント」と呼ぶ人もあります。

ということで、エクセル仕事をたくさん抱えているあなた。
お申し込みは、こちら↓です。
ベタな初心者の方は、VBA基礎編 でお待ちしております。

公開日時: 2023/08/06 13:00