从函数,子类型或类型返回多个值? [英] Return multiple values from a function, sub or type?

查看:197
本文介绍了从函数,子类型或类型返回多个值?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

所以我想知道,如何从VBA中的函数,子类型或类型返回多个值?
我有这个主要的子应该从几个函数中收集数据,但函数只能返回一个值。那么如何将多个返回给子?

解决方案

您可能想要重新考虑应用程序的结构,如果您真的,真的想要一种方法来返回多个值。



要么分开,所以不同的方法返回不同的值,或找出一个逻辑分组,并建立一个对象来保存该数据可以反过来返回。

 '这是VB6 / VBA相当于一个struct 
'的数据,无方法
私有类型设置
root作为字符串
路径作为字符串
name_first作为字符串
name_last作为字符串
overwrite_prompt作为布尔
结束键入


Public Sub Main()

Dim mySettings As settings
mySettings = getSettings()


End Sub

'如果你希望这是公开的,你最好用类而不是用户定义类型(UDT)
Private Function getSettings()作为settin gs

Dim sets As设置

在这里设置检索值
.root =foo
.path =bar
.name_first =Don
.name_last =Knuth
.overwrite_prompt = False
End With

'返回一个结构,vb6 / vba-style
getSettings =设置

结束功能


So I was wondering, how can I return multiple values from a function, sub or type in VBA? I've got this main sub which is supposed to collect data from several functions, but a function can only return one value it seems. So how can I return multiple ones to a sub?

解决方案

You might want want to rethink the structure of you application, if you really, really want one method to return multiple values.

Either break things apart, so distinct methods return distinct values, or figure out a logical grouping and build an object to hold that data that can in turn be returned.

' this is the VB6/VBA equivalent of a struct
' data, no methods
Private Type settings
    root As String
    path As String
    name_first As String
    name_last As String
    overwrite_prompt As Boolean
End Type


Public Sub Main()

    Dim mySettings As settings
    mySettings = getSettings()


End Sub

' if you want this to be public, you're better off with a class instead of a User-Defined-Type (UDT)
Private Function getSettings() As settings

    Dim sets As settings

    With sets ' retrieve values here
        .root = "foo"
        .path = "bar"
        .name_first = "Don"
        .name_last = "Knuth"
        .overwrite_prompt = False
    End With

    ' return a single struct, vb6/vba-style
    getSettings = sets

End Function

这篇关于从函数,子类型或类型返回多个值?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆