Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


18186 / 76738 ←次へ | 前へ→

【63995】Re:IPアドレス範囲の計算
発言  Yuki  - 10/1/9(土) 11:07 -

引用なし
パスワード
   ▼miyake さん:
>IPアドレスの範囲を求めるプログラムを考えています。
>IPアドレスに、一定の範囲の個数を足した場合の、IPアドレスの範囲を求めたいのですが。
>
>例えば、A1に基となるIPアドレス、B1に範囲として加える個数、C1にその結果として範囲の最後のIPアドレスを求めたい場合、どのようなプログラムにしたらいいのでしょうか。
>
>(例)
>基となるIPアドレス    個数    結果
>61.245.0.0    32768    61.245.127.255
>202.12.5.0    256    202.12.5.255
>
>上記のような場合で、結果を求めたいのです。

こんな感じでいいと思います。

Sub TEST()
  Dim IP(1, 1) As Variant
  Dim i    As Long
  
  IP(0, 0) = "61.245.0.0"
  IP(0, 1) = 32768
  IP(1, 0) = "2.12.5.0"
  IP(1, 1) = 256
  
  For i = 0 To 1
    Debug.Print IpAddrCaluc(CStr(IP(i, 0)), CLng(IP(i, 1)))
  Next
End Sub

Function IpAddrCaluc(IpAddr As String, num As Long) As String
  Dim v    As Variant
  Dim i    As Long
  Dim j    As Long
  Dim h    As String
  Dim hD   As String
 
  For j = 0 To 1
    h = ""
    v = Split(IpAddr, ".")
    For i = 0 To UBound(v)
      hD = Hex(v(i))
      If Len(hD) = 1 Then hD = "0" & hD
      h = h & hD
    Next
    h = Format(Hex(CLng("&H" & h) + num - 1), "00000000")
    If Len(h) = 7 Then h = "0" & h
    ReDim v(3)
    For i = 0 To 3
      v(i) = CLng(" &H" & Mid(h, i * 2 + 1, 2))
    Next
    h = Join(v, ".")
    IpAddrCaluc = h
  Next
End Function

1 hits

【63993】IPアドレス範囲の計算 miyake 10/1/9(土) 1:05 質問
【63995】Re:IPアドレス範囲の計算 Yuki 10/1/9(土) 11:07 発言
【63997】Re:IPアドレス範囲の計算 Yuki 10/1/9(土) 11:27 発言
【64019】Re:IPアドレス範囲の計算 Yuki 10/1/10(日) 8:16 発言
【64028】Re:IPアドレス範囲の計算 miyake 10/1/10(日) 19:06 お礼
【64031】Re:IPアドレス範囲の計算 Yuki 10/1/10(日) 22:07 発言
【64036】Re:IPアドレス範囲の計算 miyake 10/1/11(月) 23:01 お礼

18186 / 76738 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free