掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
Mid関数のエラー”プロシージャの呼び出し、または引数が不正です” (ID:81108)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
無限ループのところは直しました。ご指摘ありがとうございます。 >たとえば、変数 strData の内容が "H01kiboH" という文字列だった場合、 「j - (i + 7)」が 0 未満の値になりますので、今回のエラーに遭遇する事になりますよね。 確認したんですけど、やっぱり0以上になると思うんですが・・・ 文字列にはi+7番目にデータ(たとえば規模)の数値が入っていて、j番目は次のHが入っているのでj>i+7になると思うのですがどうでしょうか? 下に訂正したコードを書きました。 Public Sub Winsock_DataArrival(ByVal bytesTotal As Long) Dim strData As String 'strDataには”H01kibo3H02kibo5H03kibo1H04kibo2H05kibo3H.....H09kibo2”が入る Dim a As Integer, b As Integer Dim check As String Winsock.GetData strData '受信データをstrdataに格納する Text1.Text = strData 'test用 Dim i As Integer, j As Integer, k As Integer i = 0 a = 0 b = 0 Do Until check = "Fin" Do While a = 0 'Hが見つからない間 i = i + 1 'i番目の隣にずらす a = InStr(i, strData, "H") 'i番目にHがあるかどうか Loop j = i + 1 'Hのある場所の隣 Do While b = 0 '次のHを探す。Hが見つからない間 b = InStr(j, strData, "H") 'j番目にHがあるかどうか j = j + 1 'j番目を隣にずらす If Mid(strData, j, 3) = "Fin" Then Exit Do 'j番目から3文字がFinならば処理を抜ける Loop For k = 1 To 9 If Mid(strData, i + 1, 2) = "0" & k Then Select Case Mid(strData, i + 3, 4) '何のデータなのかを調べる Case "kibo" hanbaigaisha(k).Kibo = Mid(strData, i + 7, j - (i + 7)) 'i+7番目から次のHがあるj番目の手前までの文字列 Case "info" hanbaigaisha(k).Info = Mid(strData, i + 7, j - (i + 7)) Case "keir" hanbaigaisha(k).Keiretsu = Mid(strData, i + 7, j - (i + 7)) Case "dist" hanbaigaisha(k).Dist = Mid(strData, i + 7, j - (i + 7)) Case "mzai" hanbaigaisha(k).Max_zaiko = Mid(strData, i + 7, j - (i + 7)) Case "zcos" hanbaigaisha(k).Zaiko_cost = Mid(strData, i + 7, j - (i + 7)) Case "mrie" hanbaigaisha(k).Min_rieki = Mid(strData, i + 7, j - (i + 7)) Case "ijih" hanbaigaisha(k).Ijihi = Mid(strData, i + 7, j - (i + 7)) End Select End If Next If Mid(strData, j, 3) = "Fin" Then Exit Do 'j番目から3文字がFinならば処理を抜ける i = j check = Mid(strData, i, 3) 'i番目の隣から3文字を抜き出す。Finを見つけるため。 Loop End Sub
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.