Поднесите следующий код, пожалуйста. Он возвращается в Immediate Window (Ctrl + G, в VBE), но его можно легко адаптировать для возврата в любое время. Код может быть выполнен более изящным рекурсивным способом, используя переменную publi c, но нет времени вкладывать средства в этот аспект ...
Создайте следующие переменные поверх вашего модуля в объявлении область:
Option Explicit
Private finishVal As Long, curMAC As Long, boolStop As Boolean, boolFirst As Boolean
Затем скопируйте следующие подпункты:
Sub testMACGenerator() 'used to test the MAC creation
Dim MacLast As String, startVal As Long
finishVal = 1500 'how many MAC addresses to be created
curMAC = 0: boolStop = False
MacLast = "00:06:9C:10:01:01" 'Starting MAC (last recorded MAC)
'the above one uses your root ("00:06:9C:10") and first Hex values for
'the fifth and the sixth groups
MACGenerator1 MacLast
End Sub
Private Sub MACGenerator1(strMAC As String)'creates the fifth MAC group
Dim i As Integer, macIntermed As String, j As Long, MacStd As String
Dim startVal As Long, startSec As Long
MacStd = left(strMAC, 11)
startVal = CLng("&H" & Split(strMAC, ":")(4))
startSec = CLng("&H" & Split(strMAC, ":")(5)) + 1: boolFirst = True
For i = startVal To 255
If boolStop Then Exit Sub
If IsNumeric(Hex(i)) Then
macIntermed = MacStd & ":" & Format(Hex(i), "00")
Else
If Len(Hex(i)) = 1 Then
macIntermed = MacStd & ":" & "0" & Hex(i)
Else
macIntermed = MacStd & ":" & Hex(i)
End If
End If
If boolFirst Then
MACGenerator2 macIntermed, startSec
Else
MACGenerator2 macIntermed
End If
Next i
End Sub
'it creates the sixth MAC group:
Private Sub MACGenerator2(MacStd As String, Optional lngFirst As Long)
Dim i As Integer, macFinal As String, j As Long
For i = IIf(lngFirst <> 0, lngFirst, 1) To 255
If IsNumeric(Hex(i)) Then
macFinal = MacStd & ":" & Format(Hex(i), "00")
Else
If Len(Hex(i)) = 1 Then
macFinal = MacStd & ":" & "0" & Hex(i)
Else
macFinal = MacStd & ":" & Hex(i)
End If
End If
curMAC = curMAC + 1
Debug.Print macFinal ': Stop
If curMAC >= finishVal Then
boolStop = True
curMAC = 0: finishVal = 0
Exit Sub
End If
Next i
boolFirst = False
End Sub
Если что-то неясно, не стесняйтесь спрашивать разъяснения.