vba 自定义函数不可以返回全局变量的吗? vba函数返回值
函数返回值可不可以是全局变量?
1、返回值可以是全局变量,关键是看你想如何保存。比如
int global; //这里是一个全局变量
void f(int a) {
global = a; //你希望让global做为函数处理的结果用于保存。
}
当然你也可以。
int global;
int f(void) {
return global;
}
2、函数参数一般有传值和传址两种参数传递,传值是不会修改原局部变量的值的,但是传址即会修改比如。
int no_change(int a, int b) { a ^=b, b ^=a, a^=b; }
int change(int &a, int &b) { a ^b, b^=a, a ^=b;}
int main()
{
int x = 2, y = 3;
no_change(x,y);//这是传值,不会改变main函数中局部变量x y的值。
change(x,y); //这个函数是传址,会改变 main函数中局部变量x y的值
return 0;
}
VB 怎么 在自定义函数中,返回多个值?请举例说明
不定义全局变量,根本不可能做到的你的要求。
你用Sub就必须要定义全局公有变量。
★:专业定制各种小软件,小型数据管理操作系统
★:包售后 1 年(不含新增功能),6×18小时服务。实时解决问题!
Excel VBA 问题:如何定义全局变量?
声明全局变量可以在文档任何位置(For循环、If判断内除外)。比如:
Option Explicit
Public a As String
Sub aa()
a = "public"
MsgBox a
End Sub
以上代码可执行。
--------------------------------
Option Explicit
Public a As String
Sub aa()
a = "public"
MsgBox a
Dim i As Single
For i = 1 To 6
Public b As Single
b = i
MsgBox b
Next
End Sub
以上代码提示:
编译错误:
Sub 或 Function 中的属性无效
以上。
函数返回值可不可以是局部变量?
程序中返回局部变量存在风险!!!这个风险是指程序在编译时没错,但在运行后会出错!
int aaa()
{
int n = 5;
return n; //值
}
int *bbb()
{
int b[5]={0};
return b;//返回地址,潜在风险!!!
}
void main()
{
int n = aaa();
int *p = bbb();
}
如上举例:局部变量的作用域只在子函数内,在返回后,局部变量的内存已经释放。所以,如果是值的话,不涉及地址,程序不会出错。但是,如果是地址的话,程序会在运行后出错!有时候这个错误不会在运行时马上出现,但是这个错误始终是潜在的风险!!
所以,返回局部变量时一定要注意!