[リストへもどる]   [VBレスキュー(花ちゃん)]
一括表示

投稿時間:2005/03/15(Tue) 15:39
投稿者名:yuta
Eメール:
URL :
タイトル:
IPアドレスの分割取得
いつもお世話になっています。

現在テキストボックスに入力されたIPアドレスをチェックする処理を作成しているのですが、
うまくいきません。

やり方としては、入力されたIPアドレスをInStr関数で区切りの"."までの文字数を取得し
てから、
Mid関数でString型の配列に格納するようにしています。

実際のソースは以下のようになっています。

-------------------------------------------------------------------------------------------
  Dim ChkIP(3)    As String             '分割したIPアドレス
  Dim Leng        As Long               '"."までの文字数
  Dim Sep         As Integer            '分割時の開始文字位置
  Dim i           As Integer

  For i = 0 To 3
        If i = 0 Then                                                
            Leng = InStr(1, Text3(0).Text, ".", vbTextCompare)
            ChkIP(i) = Mid(Text3(0).Text, 1, Leng - 1)
            Sep = Leng + 1
        ElseIf i <= 2 Then                                              
            Leng = InStr(Sep, Text3(0).Text, ".", vbTextCompare)
            ChkIP(i) = Mid(Text3(0).Text, Sep, Leng - 1)
            Sep = Leng + 1
        Else
            ChkIP(i) = Mid(Text3(0).Text, Sep, Sep = Sep - Len(Text3(0).Text))
        End If
    Next i
-------------------------------------------------------------------------------------------
MaskedEditを使ってもよかったのですが、できればテキストボックスで処理を行ないたいと思ってい
ます。

もしご存知の方がいらっしゃいましたら、ご教授よろしくお願いします。

投稿時間:2005/03/15(Tue) 16:09
投稿者名:ダンボ
URL :
タイトル:
Re: IPアドレスの分割取得
IPアドレスチェックの基準が書いてなかったので、単にtext3(0).Textに入力された
IPアドレスを"."で分解して、0〜255であれば良しと仮定します。
こんなもので良いのでは。(未試験です)。
Stop文はエラー処理に変える。IPv6は応用で。


Dim ChkIP() As String '分割したIPアドレス
Dim i As Integer

ChkIP() = Split(text3(0).Text, ".")
If UBound(ChkIP) <> 3 Then Stop
For i = 0 To 3
If Not IsNumeric(ChkIP(i)) Then Stop
If (Val(ChkIP(i)) < 0) Or (Val(ChkIP(i)) > 255) Then Stop
Next i

投稿時間:2005/03/15(Tue) 16:19
投稿者名:yuta
Eメール:
URL :
タイトル:
Re^2: IPアドレスの分割取得
早速のレス、ありがとうございます。

> IPアドレスチェックの基準が書いてなかったので、単にtext3(0).Textに入力された
> IPアドレスを"."で分解して、0〜255であれば良しと仮定します。

すいません、記述を忘れていましたね。IPv4で大丈夫です。

上記のことを参考にして早速試してみたいと思います。

投稿時間:2005/03/15(Tue) 16:36
投稿者名:yuta
Eメール:
URL :
タイトル:
[解決]: IPアドレスの分割取得
ダンボさんの教えてくださったソースでバッチリ動きました!!

このソースを元に、自分なりにやってみようと思います。

ダンボさん、本当にありがとうございました。