VisualVasic 6.0 Professional Edition (SP 5)を使用しています。
WinsockコントロールのErrorイベントに関する質問です。このイベントでエラーを出したいと思っているのですが、
オーバーフローしてしまい、うまくいかず困っています。
MSDNライブラリの説明では、
object_Error(number As Integer, _
Description As String, _
Scode As Long, (以下略)
というふうになっていて
numberの説明は、「エラー コードが整数で渡されます。
返される値については、次の「設定値」を参照してください」
となっています。
ここまでは良いのですが、その設定値で
「sckBadState :(値)40006
要求されたトランザクションまたは要求に対して、
プロトコルまたは接続の状態が正しくありません。」
などの値がnumberに渡ってしまうとオーバーフローしてしまいます。
何か良い対策方法はないでしょうか?
現在は、
Select Case Number
Case sckBadState '40006
--処理内容--
End Select
などというふうに書いています。
よろしくお願いします。
No.1ベストアンサー
- 回答日時:
たぶん、エラーコードは符号なし2byte整数なのかな
それをlong型に変換してやればいいと思います。
Private Sub Winsock1_Error(Number As Integer, (以下略)
Select Case UnsignedShort2Long(Number)
Case sckBadState
End Select
End Sub
'Unsigned Shortをlong型に変換
Private Function UnsignedShort2Long(ByVal n As Integer) As Long
If (n >= 0) Then
UnsignedShort2Long = n
Else
UnsignedShort2Long = &H8000& + (n And &H7FFF)
End If
End Function
No.2
- 回答日時:
Integer型は、-32,768 ~ 32,767の範囲以外だと
オーバーフローします。#1の方がおっしゃるように
Long型なら-2,147,483,648 ~ 2,147,483,647まで
大丈夫なのでこれでいけるでしょう。
エラーナンバーは整数値なのでSingle型やDouble型に
する必要はありません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 【追加】ファイルを閉じてダイアログで保存した時だけ処理の実行をする 3 2022/03/23 15:43
- C言語・C++・C# C++のcase文の書き方 4 2023/02/24 20:50
- Visual Basic(VBA) VBA 改行コードの取り方 1 2022/03/22 14:14
- Visual Basic(VBA) 【Excel VBA】自動メール送信の機能追加 5 2022/09/29 12:53
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 1 2023/08/09 10:33
- Visual Basic(VBA) 先ほど、回答者様によって教えていただいたのですがどうしたらいいか分かりません。 ユーザーフォーム上に 2 2023/02/21 22:25
- Visual Basic(VBA) 【変更】ファイルを閉じてダイアログで保存した時、更新したシートだけの処理の実行をする 5 2022/03/26 18:31
- Excel(エクセル) 2つのVBAを一緒にしたら機能しなくなりました(エクセル) 7 2022/06/02 12:41
- Visual Basic(VBA) エクセルのマクロを使ってメールを送る方法について教えてください 2 2022/03/29 01:36
- Visual Basic(VBA) Vbaで数式をポーランド記法に変換するコードを作って実行しようとするとフリーズします。 1 2022/05/24 17:53
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
String""から型'Double'への変...
-
UserForm1.Showでエラーになり...
-
エクセルVBA 「On Error GoTo...
-
【VBA】ワークブックを開く時に...
-
お助けください!VBAのファイル...
-
VBAでfunctionを利用しようとし...
-
On ErrorでエラーNoが0
-
VB.net 重複チェックがしたいです
-
VBでSQL文のUPDATE構文を使った...
-
ACCESSで値を代入できないとは?
-
「実行時エラー '3167' レコー...
-
マクロで"#N/A"のエラー行を削...
-
実行時エラー'-2147467259(8000...
-
実行したSQLの結果を返す方法
-
インポート時のエラー「データ...
-
【VB.NET】 パワポ操作を非表示で
-
VBA処理中に途中で止まってしま...
-
マクロの「SaveAs」でエラーが...
-
VB6とVB.NETでNullの扱いが違う?
-
【VBAエラー】Nextに対するFor...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
UserForm1.Showでエラーになり...
-
String""から型'Double'への変...
-
On ErrorでエラーNoが0
-
VBAでfunctionを利用しようとし...
-
マクロで"#N/A"のエラー行を削...
-
VBA データ(特定値)のある最...
-
実行時エラー 438 の解決策をお...
-
お助けください!VBAのファイル...
-
文字列内で括弧を使うには
-
エクセルVBA 「On Error GoTo...
-
【VBA】ワークブックを開く時に...
-
マクロの「SaveAs」でエラーが...
-
ACCESSで値を代入できないとは?
-
実行時エラー'-2147467259(8000...
-
インポート時のエラー「データ...
-
【VB.NET】 パワポ操作を非表示で
-
Filter関数を用いた結果、何も...
-
UBoundに配列がありませんとエ...
-
Excel vbaについての質問
-
メールの件名のセットでエラー...
おすすめ情報