|
▼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
|
|