<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://www.vbex.ru/index.php?action=history&amp;feed=atom&amp;title=VBA%2FExcel%2FAccess%2FWord%2FLanguage_Basics%2FSub</id>
		<title>VBA/Excel/Access/Word/Language Basics/Sub - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://www.vbex.ru/index.php?action=history&amp;feed=atom&amp;title=VBA%2FExcel%2FAccess%2FWord%2FLanguage_Basics%2FSub"/>
		<link rel="alternate" type="text/html" href="http://www.vbex.ru/index.php?title=VBA/Excel/Access/Word/Language_Basics/Sub&amp;action=history"/>
		<updated>2026-04-06T00:13:20Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://www.vbex.ru/index.php?title=VBA/Excel/Access/Word/Language_Basics/Sub&amp;diff=1160&amp;oldid=prev</id>
		<title> в 16:33, 26 мая 2010</title>
		<link rel="alternate" type="text/html" href="http://www.vbex.ru/index.php?title=VBA/Excel/Access/Word/Language_Basics/Sub&amp;diff=1160&amp;oldid=prev"/>
				<updated>2010-05-26T16:33:00Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Версия 16:33, 26 мая 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; style=&quot;text-align: center;&quot; lang=&quot;ru&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(нет различий)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
			</entry>

	<entry>
		<id>http://www.vbex.ru/index.php?title=VBA/Excel/Access/Word/Language_Basics/Sub&amp;diff=1161&amp;oldid=prev</id>
		<title>Admin: 1 версия</title>
		<link rel="alternate" type="text/html" href="http://www.vbex.ru/index.php?title=VBA/Excel/Access/Word/Language_Basics/Sub&amp;diff=1161&amp;oldid=prev"/>
				<updated>2010-05-26T12:46:32Z</updated>
		
		<summary type="html">&lt;p&gt;1 версия&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;==an Exit Sub just before the error label, which forces the subroutine to exit immediately, without erroneously running the error code.==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;vb&amp;quot;&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Public Sub Foo()&lt;br /&gt;
   On Error Goto Foo_Err&lt;br /&gt;
   &amp;quot; some code goes here&lt;br /&gt;
   Exit Sub&lt;br /&gt;
Foo_Err:&lt;br /&gt;
   &amp;quot; Error handling code goes here&lt;br /&gt;
End Sub&lt;br /&gt;
 &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Calling Functions and Sub Procedures==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;vb&amp;quot;&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
     Sub Master()&lt;br /&gt;
           SalesData = GetInput(&amp;quot;Enter Sales Data&amp;quot;)&lt;br /&gt;
           If SalesData = False Then Exit Sub&lt;br /&gt;
           PostInput SalesData, &amp;quot;B3&amp;quot;&lt;br /&gt;
     End Sub&lt;br /&gt;
     Function GetInput(Message)&lt;br /&gt;
           Data = InputBox(Message)&lt;br /&gt;
           If Data = &amp;quot;&amp;quot; Then GetInput = False Else GetInput = Data&lt;br /&gt;
     End Function&lt;br /&gt;
     Sub PostInput(InputData, Target)&lt;br /&gt;
           Range(Target).Value = InputData&lt;br /&gt;
     End Sub&lt;br /&gt;
 &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Calling the function from a Sub procedure==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;vb&amp;quot;&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Sub CallerSub()&lt;br /&gt;
      Ans = CubeRoot(125)&lt;br /&gt;
      MsgBox Ans&lt;br /&gt;
End Sub&lt;br /&gt;
Function CubeRoot(number)&lt;br /&gt;
      CubeRoot = number ^ (1 / 3)&lt;br /&gt;
End Function&lt;br /&gt;
 &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Creating Procedures==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;vb&amp;quot;&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Option Compare Database&lt;br /&gt;
Option Explicit&lt;br /&gt;
Sub addNumbers()&lt;br /&gt;
   &amp;quot;Declare the variables&lt;br /&gt;
End Sub&lt;br /&gt;
 &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Declare sub==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;vb&amp;quot;&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Sub declareSub()&lt;br /&gt;
    Dim DateOfBirth As Date&lt;br /&gt;
    Dim age As Integer&lt;br /&gt;
    Dim FullName As String&lt;br /&gt;
End Sub&lt;br /&gt;
 &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Only place parentheses around the arguments when calling a function and making use of the return value from the function procedure==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;vb&amp;quot;&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Sub main()&lt;br /&gt;
     SalesData = GetInput(&amp;quot;Enter Sales Data&amp;quot;)&lt;br /&gt;
End Sub&lt;br /&gt;
Function GetInput(Message)&lt;br /&gt;
    Data = InputBox(Message)&lt;br /&gt;
    If Data = &amp;quot;&amp;quot; Then GetInput = False Else GetInput = Data&lt;br /&gt;
End Function&lt;br /&gt;
 &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Optional parameters==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;vb&amp;quot;&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Sub increment(x, Optional y)&lt;br /&gt;
  If IsMissing(y) Then&lt;br /&gt;
    x = x + 1&lt;br /&gt;
  Else&lt;br /&gt;
    x = x + y&lt;br /&gt;
  End If&lt;br /&gt;
End Sub&lt;br /&gt;
 &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Pass double to sub module==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;vb&amp;quot;&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Sub CubeRoot(ByVal dblNumber As Double)&lt;br /&gt;
    dblNumber = dblNumber ^ (1 / 3)&lt;br /&gt;
End Sub&lt;br /&gt;
Sub CubeRootWrapper()&lt;br /&gt;
    Dim dblVariable As Double&lt;br /&gt;
    dblVariable = 8&lt;br /&gt;
    Debug.Print &amp;quot;Before: &amp;quot; &amp;amp; dblVariable&lt;br /&gt;
    CubeRoot dblVariable&lt;br /&gt;
    Debug.Print &amp;quot;After: &amp;quot; &amp;amp; dblVariable&lt;br /&gt;
End Sub&lt;br /&gt;
 &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Passing Arguments to Subroutines and Functions==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;vb&amp;quot;&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Sub ThreeNumbers()&lt;br /&gt;
    Dim num1 As Integer, num2 As Integer, num3 As Integer&lt;br /&gt;
    num1 = 10&lt;br /&gt;
    num2 = 20&lt;br /&gt;
    num3 = 30&lt;br /&gt;
    MsgBox MyAverage(num1, num2, num3)&lt;br /&gt;
    MsgBox num1&lt;br /&gt;
    MsgBox num2&lt;br /&gt;
    MsgBox num3&lt;br /&gt;
End Sub&lt;br /&gt;
Function MyAverage(ByVal num1, ByVal num2, ByVal num3)&lt;br /&gt;
    num1 = num1 + 1&lt;br /&gt;
    MyAverage = (num1 + num2 + num3) / 3&lt;br /&gt;
End Function&lt;br /&gt;
 &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Passing Elements of an Array to Another Procedure==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;vb&amp;quot;&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;quot;Option Base 1&lt;br /&gt;
Sub CityOperator()&lt;br /&gt;
    Dim cities(6) As String&lt;br /&gt;
    cities(1) = &amp;quot;Baltimore&amp;quot;&lt;br /&gt;
    cities(2) = &amp;quot;Atlanta&amp;quot;&lt;br /&gt;
    cities(3) = &amp;quot;Boston&amp;quot;&lt;br /&gt;
    cities(4) = &amp;quot;Washington&amp;quot;&lt;br /&gt;
    cities(5) = &amp;quot;New York&amp;quot;&lt;br /&gt;
    cities(6) = &amp;quot;Trenton&amp;quot;&lt;br /&gt;
    Hello cities()&lt;br /&gt;
End Sub&lt;br /&gt;
Sub Hello(cities() As String)&lt;br /&gt;
    Dim counter As Integer&lt;br /&gt;
    For counter = 1 To 6&lt;br /&gt;
    MsgBox &amp;quot;Hello, &amp;quot; &amp;amp; cities(counter) &amp;amp; &amp;quot;!&amp;quot;&lt;br /&gt;
    Next&lt;br /&gt;
End Sub&lt;br /&gt;
 &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Private (module-level) variables can be seen by any routine in the module they were declared in, but not from other modules.==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;vb&amp;quot;&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Option Explicit&lt;br /&gt;
Private mintAge As Integer&lt;br /&gt;
Private Sub cmd()&lt;br /&gt;
  mintAge = mintAge + 1&lt;br /&gt;
  Debug.Print mintAge&lt;br /&gt;
End Sub&lt;br /&gt;
 &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==The Call Statement==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;vb&amp;quot;&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
     Sub Master()&lt;br /&gt;
         SalesData = GetInput(&amp;quot;Enter Sales Data&amp;quot;)&lt;br /&gt;
         If SalesData = False Then Exit Sub&lt;br /&gt;
         Call PostInput(SalesData, &amp;quot;B3&amp;quot;)&lt;br /&gt;
     End Sub&lt;br /&gt;
     Function GetInput(Message)&lt;br /&gt;
           Data = InputBox(Message)&lt;br /&gt;
           If Data = &amp;quot;&amp;quot; Then GetInput = False Else GetInput = Data&lt;br /&gt;
     End Function&lt;br /&gt;
     Sub PostInput(InputData, Target)&lt;br /&gt;
           range(Target).value = InputData&lt;br /&gt;
     End Sub&lt;br /&gt;
 &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Use If and ElseIf to check the parameter==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;vb&amp;quot;&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Sub MultipleIfs(intNumber As Integer)&lt;br /&gt;
   If intNumber = 1 Then&lt;br /&gt;
      MsgBox &amp;quot;You entered a one&amp;quot;&lt;br /&gt;
   ElseIf intNumber = 2 Then&lt;br /&gt;
      MsgBox &amp;quot;You entered a two&amp;quot;&lt;br /&gt;
   ElseIf intNumber &amp;gt;= 3 And intNumber &amp;lt;= 10 Then&lt;br /&gt;
      MsgBox &amp;quot;You entered a number between 3 and 10&amp;quot;&lt;br /&gt;
   Else&lt;br /&gt;
      MsgBox &amp;quot;You entered some other number&amp;quot;&lt;br /&gt;
   End If&lt;br /&gt;
End Sub&lt;br /&gt;
 &amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	</feed>