arrays - 如何将 sub 中定义的变量传递给 VBA Excel 中的函数
问题描述
在某些单元格中给出了变量,例如 x 和 y,如果它们为真,则函数 P(w) 开始启动。例如,开始 P() 的 x 表示正在检查单元格中的值是否该值 = 0 等等。数组函数“IsInArray”查看给定单元格中找到的值是否等于“x”。如果是,它应该跳转到函数 P() 命令并检查单元格中的值是否 = 0。如果是,函数 P() 为真,宏开始复制一些范围。
我的问题是:当宏进入函数时,已经定义的 Range("A" & t) 与例如 "t=3" 不会传递给函数 sub。“t”基本上是空的。目的是已经定义的变量“t”取自子程序,而不是在函数部分再次声明。
此外,我不明白为什么我必须在功能部分再次“设置 ws = Worksheets(“R”)”,即使它已经在子方中?
Sub Examine()
Dim t As Integer
Dim Results as Boolean
Set ws = Worksheets("R")
Set wt = Worksheets("G")
Set wi = Worksheets("R")
t = 2
Do
For Each cell In ws.Range("A" & t)
Set foundValue = wi.Range("A1:A75").Find(cell.Value)
If Not foundValue Is Nothing Then
If Not IsError(Application.Match("x", wi.Rows(foundValue.Row).Columns("H").Value,0)) Then
If Results=P() Then
ws.Range("A" & t).Copy wt.Range("A" & t): wt.Range("B" & t) = "J": wt.Range("C" & t) = "N"
ELSE:.....
End If ....
End If
Loop Until ws.Range("A" & t) = ""
Function P()
w = True
Set ws = Worksheets("R")
If ws.Range("B" & t).Value = 0 Then w = False 'The already defined"t" is not taken by the function from the sub.
End If
End Function
解决方案
首先是:Results=P(t)
其次,您必须在函数中使用 Byval 声明变量“t”:例如
函数 P(Byval t as Long) As Boolean
推荐阅读
- objective-c - How to find method, linked to NSButton?
- c - How to send Sysrq programmatically over serial and is CONFIG_MAGIC_SYSRQ_SERIAL required
- java - Unlikely argument type for equals(): String seems to be unrelated to MemberSearchRequest
- ionic5 - RazorpayCheckout is not defined
- java - Check if the number in string object is between range java 8
- amazon-web-services - Lifecycle Policy Not Deleting Deleted Object Permanently On AWS S3 bucket
- java - java 程序(带有 txt/csv)在 IDE 中可以正常工作,但不能在 jar 中
- find - find -cmin 0 和 -ctime 0 的规则
- facebook-graph-api - Facebook API share_count 新报告所有页面为 0
- python - 运行python程序时调试器不工作