我想在我的excel工作表中添加一个按钮,它应该调用一个可以处理一个文件的宏(一个整数值).遗憾的是,在创建按钮时,我无法链接任何具有参数的宏.只是输入宏和参数不起作用.
是否有任何简单的解决方案可以在按下按钮时将参数传递给宏?
我试图弄清楚为什么在我调用a 并为其提供多个参数时VBA返回错误.(Compile error: Expected: =)Sub
Sub customerController(cleanStructure As Boolean, firstCol As Integer, latCol As Integer, _
lngCol As Integer, Optional startRow As Long, Optional endRow As Long)
Dim i As Long, j As Long, n As Long
If (cleanStructure = False) Then
'customer data type
If (startRow = "") Then i = 1
If (endRow = "") Then j = countRows
For n = i To j - i + 1
generateURL(n, firstCol)
newReadXMLData (url)
ActiveSheet.Cells(i, …Run Code Online (Sandbox Code Playgroud) 我正在努力理解按值传递并在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文档,我意识到这一切都是正确的,但它并没有解释它背后的原因.
我有几个看起来非常相似的类成员函数:
Public Function ProcessSomething(ByVal X as Currency, ByVal Y as Long) As Boolean
Run Code Online (Sandbox Code Playgroud)
然而,其中一些功能IDE强迫我使用call语句而不是其他功能.
有人能在这里给我一些理解吗?
如图所示,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)