お世話になります。
環境 Windows 7 : Visual Strudio 2012
Function ABC(ByVal wCtrl As Object) As Boolean
If String.IsNullOrEmpty(wCtrl) = True Then
ABC= True
Else
ABC= False
End If
End Function
今まで上記のようなやり方で、引数が空かどうかを検証していたのですが、これを実行すると
型 'System.InvalidCastException' の初回例外が Microsoft.VisualBasic.dll で発生しました
というエラーが大量に発生します。
If String.IsNullOrEmpty(wCtrl) = True Then の部分でこれが発生しているようで
動作には問題ないようなのですが、どうにかできないものかと思っております。
初回例外を発生させないで同じ機能にするにはどうしたらよいでしょうか?
何卒よろしくお願いいたします。
No.2ベストアンサー
- 回答日時:
As Objectである必要はあるのですか。
言語機能としてメソッドのオーバーロードがあるのですから,本質的には各型ごとにオーバーロードを用意するのがよいと思います。
そもそも,「空白」というのは文字列,つまりはStringでの話であって,一般の型に使える話ではありませんが。
' String型は特殊でString.IsNullOrWhiteSpaceを利用
Function Abc (ByVal s As String) As Boolean
Return String.IsNullOrWhiteSpace(s)
End Function
' Bit型は受け付けない
Function Abc (ByVal bAs Bit) As Boolean
Throw New InvalidOperationException()
End Function
' String/Bit型は専用のメソッドで処理,それ以外はNothingかどうかを返す
Function Abc (ByVal o As Object) As Object
If o Is String Then
Return Abc(DirectCast(o, String))
End If
If o Is Bit Then
Return Abc(DirectCast(o, Bit)
End If
Return o Is Nothing
End Function
Yune-Kichi さん お世話になります。
処理内で型を調べ、それに合わせて評価をする方法は大変勉強になりました。ご提示いただいた処理を糧に励んでいこうと思っております。
ありがとうございました
No.1
- 回答日時:
IsNullOrEmpty は判定するオブジェクト(この場合は wCtrl)が String 型である必要があります。
変数名からすると wCtrl として渡しているものは String ではなさそうに見えますが、いったい何を渡していてそのオブジェクトがどうなっていると空になっていると見なしたいのか、補足をお願いいたします。
この回答への補足
hitomura さん お世話になります。
ご指摘の通り、String以外にも Bit型以外の値が空白かNull の場合に True を返したいと思っております。
何卒よろしくお願いいたします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 【Excel VBA】自動メール送信の機能追加 5 2022/09/29 12:53
- Visual Basic(VBA) 【追加】ファイルを閉じてダイアログで保存した時だけ処理の実行をする 3 2022/03/23 15:43
- Visual Basic(VBA) 【変更】ファイルを閉じてダイアログで保存した時、更新したシートだけの処理の実行をする 5 2022/03/26 18:31
- Visual Basic(VBA) 【VBA】写真の貼り付けコードがうまく機能しません。 5 2022/09/01 18:43
- Excel(エクセル) 2つのVBAを一緒にしたら機能しなくなりました(エクセル) 7 2022/06/02 12:41
- Visual Basic(VBA) [Excel VBA] このコードでは行の挿入や行の消去をすると13のエラーが出てしまう。 3 2022/12/09 00:29
- Visual Basic(VBA) EXCEL VBAにて動的にCheckBOXを複数作成し、同BOXにイベントを追加したい 1 2023/03/16 07:05
- Visual Basic(VBA) InputBoxでキャンセルボタンを押したらファイル自体を閉じたい 3 2022/07/23 17:52
- Visual Basic(VBA) エクセルVBA ダブルクリックしたら色反転を指定したセルのみにしたい 2 2022/04/06 12:52
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
このQ&Aを見た人はこんなQ&Aも見ています
-


CloseとDisposeの違い
Visual Basic(VBA)
-


VB.NETで DataRow()を利用して、値からコードを取得したい。
Visual Basic(VBA)
-


VB6.0の「vbFromUnicode」はVB.NETではどれに相当しますか?
Visual Basic(VBA)
-
-
4

「タイプ初期化子が例外をスローしました」エラー何?
Visual Basic(VBA)
-
5

VBのReturnの使い方
Visual Basic(VBA)
-
6

型 varchar から型 numeric への変換エラー。
その他(データベース)
-
7

VB.NETで他のプロジェクトで作成したフォームを使う方法
Visual Basic(VBA)
-
8

vb.netで画面のコントロールId名を変数で動的に制御し処理する方法
Visual Basic(VBA)
-
9

VB.NETでのイベントの途中終了
Visual Basic(VBA)
-
10

VB.NET2005 TextBox 高さ(Height) 変更
Visual Basic(VBA)
-
11

VB.NET getとsetの概念がわかりません。
Visual Basic(VBA)
-
12

VB.NETで、配列をテーブルに変換して表示する。
Visual Basic(VBA)
-
13

VB.NET Excelを読み込んでDataTableに格納し、DBにデータをINSERTする
Microsoft ASP
-
14

日付型のフィールドに空白を入れる方法を教えてください
その他(データベース)
-
15

C#で配列が空かを判定するには?
C言語・C++・C#
-
16

カンマの含まれる文字列の数値変換方法について
Visual Basic(VBA)
-
17

小数点を含む数値かどうか判断の判断方法
Visual Basic(VBA)
-
18

「指定されたキャストは有効ではありません。」とエラーが出てしまいます。
Microsoft ASP
-
19

変数の参照でエラーが出てしまいます。(VB.NET)
Visual Basic(VBA)
-
20

一つのトランザクションでSELECTとUPDATEできますか? (ADO.NET)
SQL Server
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
「タイプ初期化子が例外をスロ...
-
VB.Net Object型 空かどうか
-
Timestamp型への変換について(J...
-
Javaで文字列をゼロ埋め(ゼロパ...
-
【JAVA】与えられた金額を貨幣...
-
文字列からダブルクオートの削除
-
Excelでのエラー
-
ファイルダイアログを開いた時...
-
数字か文字列かを判定する関数
-
時間の取得
-
初回例外
-
ブックマークレットについて
-
VB.NETで16進数が正しいかどう...
-
レコード件数の表示
-
VB.NETでフォーム上にExcelのよ...
-
JSPで<SELECT>の中にDBから持っ...
-
インスタンス参照でアクセスで...
-
Java初級 引数に適用できません
-
エクセルVBAで、条件に一致する...
-
private static という変数の修飾
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「タイプ初期化子が例外をスロ...
-
VB.Net Object型 空かどうか
-
数字か文字列かを判定する関数
-
VBA Evaluate関数 型が一致しま...
-
【JAVA】与えられた金額を貨幣...
-
VC++におけるCStringの変換
-
連続する「\\」をひとつの「\\...
-
文字列からダブルクオートの削除
-
C#の捕捉されない例外処理の対...
-
ファイルダイアログを開いた時...
-
C# マルチスレッドにおける例外...
-
0除算の例外処理ができない!!...
-
時間の取得
-
Timestamp型への変換について(J...
-
例外ってIf文の中に入れますか...
-
Excelでのエラー
-
文字列が数字のみで構成されて...
-
VB.NETで16進数が正しいかどう...
-
String型の日付(2005/11/25)の...
-
VBA 400エラー 1004エラー
おすすめ情報











