お世話になります。
環境 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も見ています
-
「環境が人を育てる」って本当?環境によって人格や生き方は本当に変わるのか
環境が人生に与える影響は実際どれほどのものなのか、専門家の田宮由美さんに伺った。
-
VB.NETで DataRow()を利用して、値からコードを取得したい。
Visual Basic(VBA)
-
.NET SqlDataReader のレコード有無判定
Visual Basic(VBA)
-
VB.NETでコンボボックスの1行目を空白にしたい
Visual Basic(VBA)
-
-
4
変数の参照でエラーが出てしまいます。(VB.NET)
Visual Basic(VBA)
-
5
VB.NETでのnothing の意義について
Visual Basic(VBA)
-
6
Functionで戻り値を複数返す方法
Visual Basic(VBA)
-
7
Designer.vbは直接コードをいじってはだめ?
Visual Basic(VBA)
-
8
VB.NET Excelを読み込んでDataTableに格納し、DBにデータをINSERTする
Microsoft ASP
-
9
VB6.0のIsNull関数に相当するもの
Visual Basic(VBA)
-
10
VBの画面サイズについて
Visual Basic(VBA)
-
11
vb.netで画面のコントロールId名を変数で動的に制御し処理する方法
Visual Basic(VBA)
-
12
VBAでエクセルシートを更新(リフレッシュ)する方法を教えて下さい。
Excel(エクセル)
-
13
Hideについて(.NET)
Visual Basic(VBA)
-
14
副問合せの書き方について
SQL Server
-
15
コンソールアプリケーションのコマンドプロンプト画面を非表示
Visual Basic(VBA)
-
16
DataTableに特定のフィールドが存在するかどうか調べるには?
Visual Basic(VBA)
-
17
文字列の後ろから必要分だけ削除したい。
Visual Basic(VBA)
-
18
String"から型'Double'への変換は無効です。 とエラーが出ます。
Visual Basic(VBA)
-
19
文字列を変数名として扱う方法
Visual Basic(VBA)
-
20
VB.NETで他のEXEを実行させる
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
「タイプ初期化子が例外をスロ...
-
【JAVA】与えられた金額を貨幣...
-
Javaで文字列をゼロ埋め(ゼロパ...
-
C#の捕捉されない例外処理の対...
-
例外ってIf文の中に入れますか...
-
0除算の例外処理ができない!!...
-
VB.Net Object型 空かどうか
-
VB.NETで16進数が正しいかどう...
-
String型の日付(2005/11/25)の...
-
文字列が数字のみで構成されて...
-
VC++におけるCStringの変換
-
VBA Evaluate関数 型が一致しま...
-
全角スペースのチェックについて
-
Bean→JSPでの文字化け
-
コンストラクタでの例外は不可...
-
タトゥーや墨を入れる人の共通点
-
エクセルVBAで、条件に一致する...
-
包丁の切れ味
-
変数名の付け方
-
インスタンス参照でアクセスで...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「タイプ初期化子が例外をスロ...
-
VB.Net Object型 空かどうか
-
Timestamp型への変換について(J...
-
連続する「\\」をひとつの「\\...
-
VB.NETで16進数が正しいかどう...
-
全角スペースのチェックについて
-
C# マルチスレッドにおける例外...
-
文字列からダブルクオートの削除
-
VBA Evaluate関数 型が一致しま...
-
例外ってIf文の中に入れますか...
-
C#の捕捉されない例外処理の対...
-
時間の取得
-
【JAVA】与えられた金額を貨幣...
-
nullで、return出来るのはどん...
-
String型の日付(2005/11/25)の...
-
サーブレットからJSPの呼び出し...
-
0除算の例外処理ができない!!...
-
VBA 400エラー 1004エラー
-
文字列が数字のみで構成されて...
-
数字か文字列かを判定する関数
おすすめ情報