タグ

ブックマーク / vbabeginner.net (2)

  • VBAでWin32APIを使う方法と定義一式 | Excel作業をVBAで効率化

    Win32APIの書き方を調べるには Win32APIを使うにはDeclareステートメントで対象の関数を定義する必要があります。 じゃあ、Declareステートメントで何を書けばいいのか、という話になります。初心者の方には「上級者は全部それを覚えてて書いてるんだろうけど、そんなの無理・・・」とか思ってる方がいらっしゃいますが、どんな上級者でもWin32APIの定義を覚えている人なんかいません。 じゃあどうやってWin32APIの定義が分かるのかというと、それが書いてあるファイルがMicrosoftから提供されていてそれを見てます。Win32API自体はC言語のため、ヘルプに書いてあるC言語の定義からVBAに合わせて型変換をして、、、なんてことをやる人もいるでしょうけど、少なくとも私は面倒なのでしません。 過去にはWin32APIのDeclare宣言が書かれているWin32API.txtと

    VBAでWin32APIを使う方法と定義一式 | Excel作業をVBAで効率化
    kiyo_hiko
    kiyo_hiko 2022/03/11
    有り難し…API定義はもちろんよその言語からWin32APIを呼ぶ時にコンスタントの具体値が簡単にわかるのも超便利
  • VBAのEmptyやNothingやNull等の違いを整理 | Excel作業をVBAで効率化

    値が無い場合の表現 VBAでは値が入っていないときの表現がいくつもあります。 Empty Nothing Null “” vbNullString これらの違いを説明します。 Emptyは、主に2つの場合で発生します。 1つは空白セルの値。もう1つはVariant型の変数の初期値になります。 VBAでは変数の定義時に型を指定せず暗黙の型変換とした場合はVariant型(なんでも型)になるためEmptyになります。セルや変数の値がEmptyかどうかを判定するにはIsEmpty関数を使いますが、””と比較してもちゃんと動作します。 以下のような感じで使います。

    VBAのEmptyやNothingやNull等の違いを整理 | Excel作業をVBAで効率化
    kiyo_hiko
    kiyo_hiko 2019/04/24
    Empty = Variant型の初期値、Nothing = Object型の初期値、Nullは手動でObjectにSetしないと発生しない。あとIsMissingはプロシージャに省略可能引数が渡されたかをチェックする述語。 / 全部Nullでいいのにと思わず愚痴が出る
  • 1