Sub过程实现:
成都创新互联公司秉承实现全网价值营销的理念,以专业定制企业官网,网站建设、成都做网站,小程序开发,网页设计制作,移动网站建设,成都全网营销帮助传统企业实现“互联网+”转型升级专业定制企业官网,公司注重人才、技术和管理,汇聚了一批优秀的互联网技术人才,对客户都以感恩的心态奉献自己的专业和所长。
Sub FactsSub(ByVal intN As Integer, ByRef result As Long)
Dim i As Integer
Dim lngResult As Long
lngResult = 1
For i = 1 To intN
lngResult *= i
Next
result = lngResult
End Sub
Private Sub btnSub_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSub.Click
Dim i As Integer
Dim sum As Long = 0
Dim result As Long
For i = 1 To 10
FactsSub(i, result)
sum += result
Next
MsgBox("过程实现 1! + 2! + 3! + … + 10! = " sum)
End Sub
Function函数实现:
Function FactsFunction(ByVal intN As Integer) As Long
Dim i As Integer
Dim lngResult As Long
lngResult = 1
For i = 1 To intN
lngResult *= i
Next
Return lngResult
End Function
Private Sub btnFunction_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnFunction.Click
Dim i As Integer
Dim sum As Long = 0
For i = 1 To 10
sum += FactsFunction(i)
Next
MsgBox("函数实现 1! + 2! + 3! + … + 10! = " sum)
End Sub
一定要先在VB中添加excel引用。
在工程中引用Microsoft Excel类型库: 从"工程"菜单中选择"引用"栏;选择Microsoft Excel 11.0 Object Library(EXCEL2003),然后选择"确定"。表示在工程中要引用EXCEL类型库。
调用excel的工作表中的命令按钮,代码如下:
Private Sub Command1_Click()
Dim xlApp As Excel.Application
Dim xlBook As Excel.WorkBook
Dim xlSheet As Excel.Worksheet
Dim FileName, SheetName As String
FileName = "e:\data.xls" '打开的工作簿路径名称
SheetName = "sheet1" '命令按钮所在的工作表名
Set xlApp = CreateObject("Excel.Application") '创建EXCEL对象
Set xlBook = xlApp.Workbooks.Open(FileName) '打开已经存在的EXCEL工件簿文件
……
xlBook.Close (True) '保存并关闭工作簿
xlApp.Quit '结束EXCEL对象
Set xlApp = Nothing '释放xlApp对象
end sub
你上面的报错是不是类似“连接已经打开”或者“连接已经关闭”之类?有可能是你说的原因,SqlConnection最好不要写成全局的变量,应该在每个调用的地方重新new,最好用using结构来声明。
软糖
来回答罗。
“调用事件”有歧义,你的意思是不是下面两种:
调用事件处理方法
直接调用对象名.方法名
'例如有这样一个按钮点击事件处理程序
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
秒表.Start()
End Sub
'调用它直接用
Button1_Click(me, new EventArgs())引发事件
Button1.Click.Invoke(me, new EventArgs())另外 RaiseEvent
也可以引发事件,但不能使用
RaiseEvent 来引发派生窗体的控件事件,只有自己定义的类的事件才能用它引发。
如满意,请采纳,谢谢。
用callbyname,以下请参考;用变量值做作被调用的过程或者函数的名称;
Sub FT1()
Dim T1 As Integer
Dim T2 As Integer
Dim T3 As Integer
T1 = 2
T2 = 3
T3 = T1 + T2
Debug.Print T3
End Sub
Private Sub Command1_Click()
Dim F As String
F = "FT1"
CallByName Me, F, VbMethod
End Sub
调用过程,调用过程有诸多技巧,它们与过程的类型、位置以及在应用程序中的使用方式有关。下面说明如何调用 Sub 过程和 Function 过程。
调用 Sub 过程
与 Sub 过程不同,在表达式中,Sub 过程不能用其名字调用。调用 Sub 过程的是一个独立的语句。Sub 过程还有一点与函数不一样,它不会用名字返回一个值。但是,与 Function过程一样,Sub 过程也可以修改传递给它们的任何变量的值。
调用 Sub 过程有两种方法:
'以下两个语句都调用了名为 MyProc 的 Sub 过程。
Call MyProc (FirstArgument, SecondArgument)
MyProc FirstArgument, SecondArgument
注意,当使用 Call 语法时,参数必须在括号内。若省略 Call 关键字,则也必须省略参数两边的括号
调用函数过程
通常,调用自行编写的函数过程的方法和调用 Visual Basic 内部函数过程(例如 Abs)的方法一样;即在表达式中写上它的名字。
'下面的语句都调用函数 ToDec。
Print 10 * ToDec
X = ToDec
If ToDec = 10 Then Debug.Print "Out of Range"
X = AnotherFunction ( 10 * ToDec)
就像调用 Sub 过程那样,也能调用函数。下面的语句都调用同一个函数:
Call Year (Now)
Year Now
当用这种方法调用函数时,Visual Basic 放弃返回值。
调用其它模块中的过程
在工程中的任何地方都能调用其它模块中的公用过程。可能需要指定这样的模块,它包含正在调用的过程。调用其它模块中的过程的各种技巧,取决于该过程是在窗体模块中、类模块中还是标准模块中。
窗体中的过程
所有窗体模块的外部调用必须指向包含此过程的窗体模块。如果在窗体模块 Form1 包含 SomeSub 过程,则可使用下面的语句调用 Form1 中的过程:
Call Form1.SomeSub(arguments)
类模块中的过程
与窗体中调用过程类似,在类模块中调用过程要调用与过程一致并且指向类实例的变量。例如,DemoClass 是类 Class1 的实例:
Dim DemoClass as New Class1
DemoClass.SomeSub
但是不同于窗体的是,在引用一个类的实例时,不能用类名作限定符。必须首先声明类的实例为对象变量(在这个例子中是 DemoClass )并用变量名引用它。
标准模块中的过程
如果过程名是唯一的,则不必在调用时加模块名。无论是在模块内,还是在模块外调用,结果总会引用这个唯一过程。如果过程仅出现在一个地方,这个过程就是唯一的。
如果两个以上的模块都包含同名的过程,那就有必要用模块名来限定了。在同一模块内调用一个公共过程就会运行该模块内的过程。例如,对于 Module1 和 Module2 中名为 CommonName 的过程,从 Module2 中调用 CommonName 则运行 Module2 中的 CommonName 过程,而不是 Module1 中的 CommonName 过程。
从其它模块调用公共过程名时必须指定那个模块。例如,若在 Module1 中调用 Module2 中的 CommonName 过程,要用下面的语句:
Module2.CommonName (arguments)
Public 用于声明对所有模块中的所有其它过程都可以使用的过程。
Private 用于声明只能在包含该声明的模块中使用的过程。