2009-07-10 27 views
1

我知道必須有一個辦法:如何獲得下一個IP的範圍從Excel

我需要幫助得到任何熱練成模塊/訣竅/腳本/宏將看一個IP範圍是給我下一個地址了嗎? 例如 (192.168.1.128) - >(192.168.1.129)

不知道我需要子網,但也會把它扔出去。 (192.168.1.255) - >(192.168.2.1)

我敢打賭,是必須與VBScript和快速就如何落實髒教程做,這將是恆星

在此先感謝〜

編輯:

Excel列d具有手動輸入

192.168.1.1

的excel塔E應具有192.168.1.2

我想避免有人手動輸入

要達到此目的的最佳方法是什麼?

+0

記住,0.0是網絡地址和.255是廣播地址,所以你可能不想排除他們... – 2009-07-10 20:01:54

+0

我會嘗試並獲得更多的細節,我究竟是什麼嘗試做...我的問題是一個有點神祕.. – BigBlondeViking 2009-07-10 20:23:28

回答

1

你需要以塊

Dim ip As String 
Dim ip_addr() As String 
Dim ip_next As String 
ip = "192.168.1.1" 

ip_addr = Split(ip, ".") 

ip_next = ip_addr(0) & "." & ip_addr(1) & "." & ip_addr(2) & "." & Trim(Str(Val(ip_addr(3) + 1))) 

然而,這並不佔子網分割您的IP地址,這是非常棘手的實現,因爲你需要位掩碼。如果你堅持8位掩碼的倍數,這不應該太複雜。

對於每個塊,8位掩碼範圍從1-255。

只是檢查是否

Val(ip_addr(3) + 1))) > 255 

然後妥善處理

編輯

從Excel中的一個單元讀取的數據簡單地改變

ip = "192.168.1.1" 

ip = Range("B1") 
0

基於關閉埃裏克幫助:和文章,我發現here是答案:

Function GetNextIP(text As Variant) 


Dim ip As String 
Dim ip_addr() As String 
Dim ip_next As String 
ip = text 

ip_addr = Split(ip, ".") 


ip_next = Trim(Str(Val(ip_addr(3) + 1))) 

If ip_next = 256 Then 
    ip_next = 0 
End If 



GetNextIP = ip_addr(0) & "." & ip_addr(1) & "." & ip_addr(2) & "." & ip_next 



End Function