質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
VBScript

VBScript(Visual Basic Scripting Edition)はMicrosftが開発したスクリプト言語であり、Visual Basicのサブセットです。

Q&A

解決済

1回答

393閲覧

vbscrriptのnullの扱いについて

hmhmmmm

総合スコア2

VBScript

VBScript(Visual Basic Scripting Edition)はMicrosftが開発したスクリプト言語であり、Visual Basicのサブセットです。

0グッド

0クリップ

投稿2022/12/22 12:20

前提

実現したいこと

vbscriptのIF文で以下の条件分けを行いたいです。
「変数AがNULLでなく、Nothingでもない場合にある処理を行う」

発生している問題・エラーメッセージ

変数AがNullだった場合、以下の2つのどちらもIf分の中に入ってしまい、実現できずにいます。
なぜこのような現象になるのかご存じの方いましたら教えていただきたいです。

If Not A Is Nothing Then
----処理
End If

If A Is Nothing Then
----処理
End If

該当のソースコード

VBScript

1If Not IsNull(A) And Not A Is Nothing Then 2 ----処理 3End If 4

試したこと

ここに問題に対して試したことを記載してください。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

otn

2022/12/22 12:53

・そのまま実行できるプログラム全体 ・期待する結果 ・実際の結果 を示してください。
KOZ6.0

2022/12/22 20:37 編集

On Error Resume Next を外してみましょう、 「オブジェクトがありません」で異常終了しませんか? VarType で変数の型を評価してから処理すると良いです。
guest

回答1

0

ベストアンサー

test.vbs

vb

1On Error Resume Next '犯人はコイツ 2A = NULL 3If NOT A Is Nothing Then 4 WScript.Echo "NOT NULL" 5End If 6If A Is Nothing Then 7 WScript.Echo "NULL" 8End If
Z:\>cscript test.vbs Microsoft (R) Windows Script Host Version 5.812 Copyright (C) Microsoft Corporation. All rights reserved. NOT NULL NULL Z:\>

On Error Resume Next をコメントアウトすると

Z:\>cscript test.vbs Microsoft (R) Windows Script Host Version 5.812 Copyright (C) Microsoft Corporation. All rights reserved. Z:\test.vbs(3, 1) Microsoft VBScript 実行時エラー: オブジェクトがありません。 Z:\>

ではどうするかというと

test2.vbs

vb

1Option Explicit 2Function IsNullOrNothing(A) 3 IsNullOrNothing = False 4 Select Case VarType(A) 5 Case vbNull 6 IsNullOrNothing = True 7 Case vbObject 8 If A Is Nothing Then 9 IsNullOrNothing = True 10 End If 11 End Select 12End Function 13 14Dim A 15A = Null 16If IsNullOrNothing(A) Then WScript.Echo "Null Or Nothing" 17Set A = Nothing 18If IsNullOrNothing(A) Then WScript.Echo "Null Or Nothing"
Z:\>cscript test2.vbs Microsoft (R) Windows Script Host Version 5.812 Copyright (C) Microsoft Corporation. All rights reserved. Null Or Nothing Null Or Nothing

vbs を使うコツ
・先頭に Option Explicit を付ける
コーディングミスを防ぐ効用がありますし、変数を確保したかどうかチェックしなくなるのでループ処理等が速くなります。
・On Error Resume Next は局所的に使う
例)

vb

1On Error Resume Next 2' DB 接続処理 3If Err.Number <> 0 Then 4 ' エラー処理 5End If 6On Error Goto 0

投稿2022/12/22 23:45

KOZ6.0

総合スコア2622

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hmhmmmm

2023/11/20 01:52

返信が遅くなってしまい大変申し訳ありません。 私の説明が足りない中うまくくみ取っていただき、、まさにな回答でした。 わかりやすく解説していただきありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問