1. 首页 > 科技

vba 自定义函数不可以返回全局变量的吗? vba函数返回值

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();

}

如上举例:局部变量的作用域只在子函数内,在返回后,局部变量的内存已经释放。所以,如果是值的话,不涉及地址,程序不会出错。但是,如果是地址的话,程序会在运行后出错!有时候这个错误不会在运行时马上出现,但是这个错误始终是潜在的风险!!

所以,返回局部变量时一定要注意!