簡體   English   中英

將一段代碼轉換為一個函數,以及如何使用該函數。 VBA VBA VBA

[英]Converting a piece of code into a function, and how to take the function into use. VBA VBA VBA

如何將以下代碼轉換為函數,這樣我就可以通過輸入諸如Function functionname(Cell1, Cell2)類的代碼來調用它?

我想指定自己是超級擦洗者,如果您可以確切地告訴我如何使用調用值和所有操作來完成操作,我將非常喜歡它。 例如,如果我需要編寫函數functionname(Cell1.value, Cell2.value)以使其起作用?
總體而言,我尋求有關如何使此代碼成為函數以及以后如何在代碼中使用該函數的知識?
請記住,我是VBA的完整專家,請具體說明。 最好顯示工作示例。

  Arr = Split(Range("G3").Value, ".")
    If Arr(3) = 254 Then
        Arr(3) = 1
        If Arr(2) < 254 Then
            Arr(2) = Arr(2) + 1
        Else
            Arr(2) = 1
            If Arr(1) < 254 Then
                Arr(1) = Arr(1) + 1
            Else
                Arr(1) = 1
                If Arr(0) < 254 Then
                    Arr(0) = Arr(0) + 1
                Else
                    MsgBox "Error! No more IP's available"
                End If
            End If
        End If
    Else
        Arr(3) = Arr(3) + 1
    End If

    Range("G2").Value = Join(Arr, ".")


End Sub

只需將代碼定義為一個函數即可。 檢查此網頁以獲取更多信息...確保在要使用功能的同一工作表中創建模塊。

https://support.office.com/zh-CN/article/Create-Custom-Functions-in-Excel-2007-2f06c10b-3622-40d6-a1b2-b6748ae8231f

作為示例,我將向您發送我剛剛創建的這個小功能,以說明您如何操作...

Function funct_sum(x As Integer, y As Integer)

    funct_sum = x + y

End Function

現在,此功能將在您的excel工作表中可用。

試試這個。 您所需要做的就是更改sub newloc()的范圍。

Sub newloc()

   Range("G2").Value = PlusOne(Range("G2").Value)
   Range("Z2").Value = PlusOne(Range("Z2").Value)
   Range("AB2").Value = PlusOne(Range("AB2").Value)



End Sub



Function PlusOne(IP)
    Arr = Split(IP, ".")
    if(instr(Arr(3), "/")<>0) then
        prefix = mid(Arr(3), instr(Arr(3), "/"))
        Arr(3) = left(Arr(3), instr(Arr(3), "/")-1)
    end if
    If Arr(3) = 254 Then
        Arr(3) = 1
        If Arr(2) < 254 Then
            Arr(2) = Arr(2) + 1
        Else
            Arr(2) = 1
            If Arr(1) < 254 Then
                Arr(1) = Arr(1) + 1
            Else
                Arr(1) = 1
                If Arr(0) < 254 Then
                    Arr(0) = Arr(0) + 1
                Else
                    MsgBox "Error! No more IP's available"
                End If
            End If
        End If
    Else
        Arr(3) = Arr(3) + 1
    End If

    if prefix <>"" then Arr(3) = Arr(3) & prefix
    PlusOne = Join(Arr, ".")
End Function

編輯:添加了Z和AB列,以使代碼在如何使用上更加清晰。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM