VBA删除部分代码并将其置于单独的过程中

时间:2014-06-03 19:56:13

标签: excel vba excel-vba ms-office excel-2010

我完全不知道如何创建单独的subs / functions来缩短code。我指的是那些 subs(某事为整数等)

下面我们将code放在我的核心module

Set els = IE.Document.getelementsbytagname("a")
    For Each el In els
        If Trim(el.innertext) = "Documents" Then
            colDocLinks.Add el.href
        End If
    Next el

    For Each XML_link In colDocLinks
        LoadPage IE, CStr(XML_link)
        For Each el In IE.Document.getelementsbytagname("a")
            If el.href Like "*[0-9].xml" Then
                With Worksheets("CONTROL_ROOM").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0)
                    .NumberFormat = "@"
                    .Value = Ticker
                    .Offset(0, 1).Value = el.href
                End With
                Debug.Print el.innertext, el.href
                colXMLPaths.Add el.href
            End If
        Next el
    Next XML_link

我真的需要缩短我的code。如何创建单独的subfunction,而不是将code这一块放入我的主module

图书提供了过于简单的例子,在实际情况下对我没有任何帮助就像这样。我是否需要在单独的Dim elsSub内进行Function等声明?感谢您提前耐心等待。

最重要的是无论我看这些例子有多少时间我都无法弄清楚我在这里放了哪些变量:

(Private) Sub / (Private) Function ( variables ?)

+++任何好的例子/链接都会有所帮助。

1 个答案:

答案 0 :(得分:1)

只要您希望能够调用代码块来执行某些操作,就可以创建子例程,而无需向调用它的代码返回任何类型的值:

  

Sub MainCode()

Dim myString as String

...'all your main code

Call OtherSub(myString)

...'all your main code
     

End Sub

     

Sub OtherSub(theString as String)

'Do Something with the string theString
     

End Sub

想要返回某些内容时创建一个函数:

  

Sub MainCode()

 Dim myString as String, newString as String

...'all your main code

NewString = OtherSub(myString)

...'all your main code
     

End Sub

     

Function ManipulateString(theString as String)

'Do Something with the string theString

 ManipulateString = theString & ...
     

结束功能

在函数结束时,要返回新值,只需将函数名设置为等于传回的值。

希望有所帮助。