私有子程序在从main接收值后是否与main相同,创建新变量并将其传递给main?
这是我想要做的,但我遇到了一些困难。 例如,在下面的testSUB中,我更改了字符串。我可以将extraSTRING和newSTRING传递给main吗?任何例子都会有所帮助。
Module module1
Sub main()
Dim l As String
Dim I As Long = 1
Dim A As String
testsub(l, A, I)
End Sub
Private Sub testSub(l As String, A As String, I As Long)
Dim extraSTRING As String = "extraTEXT"
Dim newSTRING As String = l & extraSTRING
End Sub
End Module
答案 0 :(得分:3)
要返回值,您可以将Sub
转换为Function
:
Private Function testFunction (ByVal arg1 As String) As String
Return arg1 & " and some more text"
End Function
要调用上面的Function
并分配返回的值,请使用以下代码:
Dim a As String = testFunction("some text")
'Output:
'a = "some text and some more text"
下面是输出代码的截图:
或者,您可以使用ByRef:
指定以这样的方式传递参数:被调用的过程可以更改调用代码中参数的变量值。
ByRef
与ByVal略有不同:
指定以这样的方式传递参数:被调用的过程或属性不能更改调用代码中参数的变量值。
以下是一些示例代码,向您展示了行动的差异:
Module Module1
Sub Main()
Dim a As Integer = 0
Dim b As Integer = 0
Dim c As Integer = 0
testSub(a, b, c)
'Output:
'a = 0
'b = 0
'c = 3
End Sub
Private Sub testSub(arg1 As Integer, ByVal arg2 As Integer, ByRef arg3 As Integer)
arg1 = 1
arg2 = 2
arg3 = 3
End Sub
End Module
如果未在modifier
中指定VB.NET
(如上面的arg1
所示),默认情况下编译器将使用ByVal
。
此处请注意,虽然
VB.NET
默认情况下使用ByVal
但未指定VBA
,但ByRef
不会,而默认使用Sub main() Dim l As String Dim A As String Dim I As Long = 1 testSub(l, A, I) End Sub
。如果您将代码从一个代码移植到另一个代码,请注意这一点。
下面是输出代码的截图:
以您的代码为例:
l
要传递变量A
,I
和ByRef
并更改其值,您可以更改方法以使用修饰符Private Sub testSub(ByRef l As String, ByRef A As String, ByRef I As Long)
l = "TEXT"
A = "extra" & l
I = 100
End Sub
。
<div id="mapWrapper" style="height:500px; width:500px;">
<div id="map" style="height:100%"></div>
</div> <!-- end of the mapWrapper -->
<script>
function initMap() {
map = new google.maps.Map(document.getElementById('map'), {
center: {lat: -34.397, lng: 150.644},
zoom: 8
});
}
</script>
下面是输出代码的截图: