| 基礎解説 チェック式 WSH入門 第5回 5.明示的な型変換と特殊な値Microsoft MVPVisual Developer - Scripting 牟田口 大介 2006/09/22 |
![]() |
|
|
|
明示的な型変換
では、先ほどのXとYの値をそれぞれ入力して、数値として足し算したい場合はどうするかというと、関数を用いた明示的な型変換が必要になる。
先ほどのコードを、関数を用いて明示的に型変換を行うようにする。
Option Explicit |
このスクリプトを先ほどと同じようにXに100、Yに50を入力すると、次のような結果になる。
![]() |
| 明示的な型変換の例 |
| 明示的な型変換を行うと、正しい演算が行える。 |
このように、文字列を数値に明示的な変換を行うと、正しい演算が行える。
ここではまずInputBox関数で入力した文字列が、数値に変換可能かをIsNumeric関数で調べている。IsNumeric関数は、引数に渡された文字列が数値に変換可能だとTrueを返す。
変換可能だということが分かったら、あとは実際に変換を行う。その際に用いるのがCDbl関数である。この関数は、Double以外の型(Stringやほかの数値型)をDoubleに変換する関数である。これが明示的な型変換である。
明示的な型変換に用いる関数としては、次のようなものがある。
| 関数名 | 説明 |
| CBool | ブール型(Boolean)に変換 |
| CByte | バイト型(Byte)に変換 |
| CCur | 通貨型(Currency)に変換 |
| CDate | 日付(時刻)型(Date)に変換 |
| CDbl | 倍精度浮動小数点型(Double)に変換 |
| CInt | 整数型(Integer)に変換 |
| CLng | 長整数型(Long)に変換 |
| CSng | 単精度浮動小数点型(Single)に変換 |
| CStr | 文字列型(String)に変換 |
| 明示的な型変換に用いる関数(変換関数) | |
VBScriptは型を宣言することがないため、暗黙の型変換が行われる場面が多く、通常は型変換を意識しなくてもよいのだが、先ほどの100+50=10050のような例もあるので、これらの変換関数を用い、型を意識したコードの記述を心掛けた方がよい。
次の例題では、文字列から日付への変換を行ってみよう。InputBoxで入力した文字列が日付かどうかを判定し(IsDate関数を用いる)、実際に日付型に変換し、現在との年間隔(つまり、年齢だ)を求めるスクリプトを組んでみよう。日付の計算には、前回解説した関数が利用できる。
Dim strDate, dtmDate |
IsDate関数とCDate関数の組み合わせがキーとなる。IsNumeric関数とCDbl関数の組み合わせと基本は同じである。
なお、DateDiff関数の戻り値はLongなので、ここでは明示的にCStr関数を使って文字列型に変換している。関数の戻り値など、型があらかじめ分かっている場合は、IsNumeric関数などで変換可能かを調べる必要はない。
VBScriptの特殊な値EmptyとNull
VBScriptのどのデータ型にも属さない特殊な値として、Empty値とNull値がある。
Empty値とは、初期化されていない値のことである。つまり、変数を宣言し、代入する前に格納されている初期値である。
Option Explicit |
このようなスクリプトを実行すると、結果は“Empty”となる。
Empty値は、文字列として扱われる場合は長さ0の文字列("")、数値として扱われる場合は0、ブール値として扱われる場合はFalseと等しくなる。つまり、
Option Explicit |
は、長さ0の文字列""と、ある文字列が結合された文字列が表示される。
また、
Option Explicit |
を実行すると0+1が計算され、1と表示される。
また、
Option Explicit |
を実行すると、Falseと判定されるため、“False”が表示される。
VBScriptにはEmpty値が存在するために、変数に値を代入しなくてもすぐに初期値として用いることができるので便利だが、意図した型とは違う型として扱われることを防ぐためには、変数を宣言した後、初期値を代入した方がよい(valEmpty = "" 、valEmpty = 0 、valEmpty = Falseなどとする)。
なお、IsEmpty関数に変数を引数として渡すと、変数がEmptyならTrueを返すので、初期化されているかいないかが分かる。
この関数を利用して、InputBox関数で「キャンセル」ボタンをクリックしたかどうか判別できる。
Option Explicit |
キャンセルをクリックすると、InputBox関数の戻り値はEmptyになるため、IsEmpty関数の結果がTrueとなる。何も入力せずにOKを押したときは、長さ0の文字列("")が返されるので、両者を区別することができる。ちょっとしたテクニックとして覚えておこう。
Null値は、Empty値とは違い、「無効な値」を意味する。WSHでは主にデータベースを扱う際、Nullの項目を変数に代入するとNull値が格納される。x = NullのようにしてNullを変数に代入することもできる。
Null値は無効な値なので、数値演算などを行うとNull値のままになる。また、関数などの引数に渡すとエラーが発生することもある。論理演算を行う際もNull値が含まれると特有の扱いをされるので注意が必要だ。
なお、IsNull関数にNull値を引数として渡すとTrueを返される。これを利用すると、変数がNullかどうかを判別できる。
■
今回は、VBScriptを使ううえで必要となる知識、「変数の型」を取り上げ、その種類と取り扱いを述べるとともに、型同士の相互変換を行ううえでの注意点を中心に述べた。次回もやはりVBScriptを扱ううえで欠かせない知識となる、「配列」を取り上げて詳説する予定である。![]()
| INDEX | ||
| [基礎解説]チェック式 WSH入門 | ||
| 第5回 データ型について理解を深めよう | ||
| 1.VBScriptのデータ型 | ||
| 2.形名の調査と数値データ型 | ||
| 3.ブール・データ型 | ||
| 4.暗黙の型変換 | ||
| 5.明示的な型変換と特殊な値 | ||
| 基礎解説 |
ホワイトペーパー(TechTargetジャパン)
- WindowsTIPS (2010/3/19)
− [シャットダウン]ボタンの設定を変更する
− WINSサーバをインストールする
− WINSサーバをnetshコマンドで管理する - Windows 7のファイアウォール機能 (2010/3/18)
Win 7のファイアウォールの概要解説。ルールセットを切り替えるプロファイル機能が強化され、ドメインでもVPNでも、適切なルールが自動選択される - 第212話 プリンタ用紙 (2010/3/16)
致命的なディスク・クラッシュが起きる確率は、クラッシュによってもたらされる被害の大きさに比例する… - WindowsTIPS (2010/3/12)
− 不要なアドオンを無効化してIE8の起動を高速化する
− IE8のソース表示エディタを変更する
− RRASのNATでポートマッピングを定義する
|
|
スキルアップ/キャリアアップ(JOB@IT)
スポンサーからのお知らせ
- - PR -
| 「いつかは壊れるサーバ」そんな故障に 迅速で安価に手軽に対応する方法とは? New! |
| 「特権ユーザー」の事件を防げ! 万能権限を持つユーザーの管理方法とは? New! |
| 仮想環境の構築とデータ保護の特効薬?! 実績と信頼性の高いパッケージで安心運用 |
| 仮想環境のバックアップもこれまでどおり 「まるごと取ってまるごと戻す」簡単運用 |
| おばかアプリ選手権、第4弾開催中!! ムダにカッコよくてくだらない作品求ム! |
| 社内ファイルサーバを“クラウド”に統合 VPN直結「クラウド型ストレージ」を紹介 |
| その数、なんと400台以上! グループ内 サーバの「統合管理」によるメリットは? |
| 美人!? まあまあ? 気になる いやし系!! PV急増で「美人時計」がとった手段とは? |
| 進化を続ける富士通ストレージETERNUS DX 製品開発者の自信を裏付けるものとは何か |
| 運用管理の課題を“2つの観点”から分析 ユーザー満足度の高い「仮想環境」とは? |
- - PR -
お勧め求人情報

**先週の人気講座ランキング**
〜CCNA編〜
| ◆ | TomcatやJBossなどAPサーバ環境に関する 情報を集約! “業務”用APサーバ大百科 New! |
| ◆ | 一気に解説! 最新のクラスタストレージ 「RAIDを超えたストレージ基準」……など New! |
| ◆ | クラウド的ユーザー体験の変化は脅威か? 仮想化技術を使いこなす運用管理術を紹介 New! |

| ◆ | 上司や部下、部署内メンバーとの情報共有 を“ガラッ”と変えるコラボツールとは? New! |
| ◆ | おばかアプリ選手権、第4弾開催中!! ムダにカッコよくてくだらない作品求ム! |
| ◆ | 社内ファイルサーバを“クラウド”に統合 VPN直結「クラウド型ストレージ」を紹介 |

| ◆ | Twitterのアカウントはなぜ突破された? メールによる新手の攻撃手法とその対策 |
| ◆ | もう仮想化のお試しフェイズは終わりだ! Hyper-V 2.0が基幹システムも仮想化 |
| ◆ | 美人!? まあまあ? 気になる いやし系!! PV急増で「美人時計」がとった手段とは? |

| ◆ | クライアント企業から求められる人材 ⇒IT技術と経営戦略を併せ持つ「戦略家」 |
| ◆ | .NET編集長が実践する「技術情報検索術」 サンプル・コードを簡単に探す“技”は? |
| ◆ | 業務効率と情報セキュリティ対策を両立! 手間なく確実に機密情報を守る方法とは? |

| ◆ | 進化を続ける富士通ストレージETERNUS DX 製品開発者の自信を裏付けるものとは何か |
| ◆ | 運用管理の課題を“2つの観点”から分析 ユーザー満足度の高い「仮想環境」とは? |

| ◆ | 【CTC事例】約30の基幹システムを統合! 膨大なバッジジョブを制御した方法は? |
| ◆ | 仮想化すればコストは削減できるか? 仮想化に必要な「3つの視点」を解説する |
| ◆ | その数、なんと400台以上! グループ内 サーバの「統合管理」によるメリットは? |








