gpt4 book ai didi

excel - 调用另一个子时 ByRef 类型不匹配

转载 作者:行者123 更新时间:2023-12-04 19:57:34 25 4
gpt4 key购买 nike

我试图通过使用 for 循环传递 i 值来在 VBA 中有一个子程序来调用另一个子程序。问题是当您运行 forLoop() 子程序时,出现错误 ByRef 类型不匹配。我只是在尝试这个示例方法,看看它是否有效,以便我可以放入更大的宏中。
我尝试添加 ByVal 方法,但错误仍然存​​在。有人请帮助我。
forLoop 子

Public Sub forLoop()

For i = 1 To 3

Call Fetch_data(i)

Next i
End Sub
Fetch_data() 子
Sub Fetch_data(num As Integer)

Dim data As String
Dim myCellValue As range
Dim myCellValue1 As range
Dim sht As String

Set sht = "mySheet" & num
Set myCellValue = sht.range("J6")
Set myCellValue1 = sht.range("J8")
myCellValue1.Value = myCellValue.Value

End Sub

最佳答案

问题是

Sub Fetch_data(num As Integer)
是相同的
Sub Fetch_data(ByRef num As Integer)
所以 Call Fetch_data(i)i引用。但自从在 forLoop()变量 i未声明它是 Variant默认情况下,而不是 Integer因此类型不匹配。确保您使用 Option Explicit并正确声明所有变量:
Public Sub forLoop()
Dim i As Integer
For i = 1 To 3
Fetch_data i
Next i
End Sub
您也可以将参数 ByVal因为没有必要拥有它 ByRef (否则您的子 Fetch_data 可能会弄乱 forLoop 中的循环计数器:
Sub Fetch_data(ByVal num As Integer)
Dim data As String
Dim myCellValue As range
Dim myCellValue1 As range
Dim sht As Worksheet

Set sht = ThisWorkbook.Worksheets("mySheet" & num)
Set myCellValue = sht.range("J6")
Set myCellValue1 = sht.range("J8")
myCellValue1.Value = myCellValue.Value
End Sub

关于excel - 调用另一个子时 ByRef 类型不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67899272/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com