相关疑难解决方法(0)

Call关键字在VB6中有什么作用?

我们的项目中有一些代码看起来像这样:

Private Sub Method1()
    Call InnerMethod
End Sub

Private Sub Method2()
    InnerMethod
End Sub

Private Sub InnerMethod()
    '' stuff
End Sub
Run Code Online (Sandbox Code Playgroud)

Method2优于Method2的优势是什么?

vb6 syntax vba

33
推荐指数
3
解决办法
3万
查看次数

VB6传递值并通过引用传递

我正在努力理解按值传递并在VB6中通过引用传递.我完全理解这些概念是面向对象的编程语言,如.NET和Java(我意识到Java没有通过引用传递).看看下面的代码:

Private Sub Form_Load()

Dim Test As Integer
Test = 1
TestFunction Test 'line 5
MsgBox (Test)

End Sub

Private Sub TestFunction(ByVal i As Integer)
    i = i + 1
End Sub
Run Code Online (Sandbox Code Playgroud)

当我在第5行的Test周围放置括号时,消息框会按照我的预期打印1.现在看看下面的代码:

Private Sub Form_Load()

Dim Test As Integer
Test = 1
TestFunction Test 'line 5
MsgBox Test

End Sub

Private Sub TestFunction(ByRef i As Integer)
    i = i + 1
End Sub
Run Code Online (Sandbox Code Playgroud)

消息框按照我的预期打印2.但是,如果在第5行添加括号,则消息框将打印1,这是我不希望的.即使被调用函数中定义的变量是ByRef,看起来调用函数也可以通过值传递.反之亦然,即如果被调用函数具有定义为ByVal的变量的签名,则它将始终为ByVal(即使调用函数中的变量周围没有括号).在VB6中,这背后的想法是什么?我意识到这是VB6中的一个基本问题,但它让我很困惑.我已经阅读了MSDN文档,我意识到这一切都是正确的,但它并没有解释它背后的原因.

vb6 vbscript vba

12
推荐指数
2
解决办法
1万
查看次数

当sub需要参数时,VBA提供语法错误

如图所示,test1来电FillEmptyWith却给了我一个

编译错误:=预期

有人可以帮忙吗?

Sub FillEmptyWith(Range, val)
    For Each cell In Range
        If IsEmpty(cell) Then
            cell.Value = val
        End If
    Next cell
End Sub
Run Code Online (Sandbox Code Playgroud)
Sub test1()
   FillEmptyWith ((Sheets("In Force Earnix").Range("S10:S20")),"N")
End Sub
Run Code Online (Sandbox Code Playgroud)

excel vba

-1
推荐指数
1
解决办法
35
查看次数

标签 统计

vba ×3

vb6 ×2

excel ×1

syntax ×1

vbscript ×1