繁体   English   中英

在VBA中从一个子变量到另一个子变量使用变量的值

[英]Using a variable's value from one sub into another in VBA

拜托,我正在尝试将变量的值从一个子对象转换为另一个子对象,但不幸的是我没有得到它。 请遵循以下代码:

Sub get_value()
    Dim area2 As Range

    Set area2 = Range(Cells(8, 2), Cells(linha, 2))
    f = area2.Count
    s = x - f
End Sub

Sub get_value_s()
    Worksheets(2).Activate

    Range("A3").Select
    Selection.End(xlDown).Select
    linha = Selection.Row
    linha2 = linha + s

    Rows(linha2).Select
    Selection.Insert Shift:=xlDown
End Sub

PS我已将s全局设置为整数。 (以整数形式公开)。

非常感谢!

没有更多的代码,很难知道错误是什么,因为您还有其他几个全局变量,而我们看不到它们的设置方式。 我的猜测是您在调用变量之前未设置变量。 例如,您确定get_value()调用get_value_s()之前先调用get_value_s() ,并且xlinha在您调用时是正确的值吗?

我建议不要使用Globals,除非您确实有。 我可以将您的代码简化为仅一个全局( x ),这是因为我没有有关其来源的信息。

尝试以下方法:

Public x As Integer

Function get_value(linha As Integer, wks As Worksheet)
    Dim area2 As Range
    Set area2 = wks.Range(Cells(8, 2), Cells(linha, 2))

    Dim f As Long
    f = area2.Count
    get_value = x - f
End Function

Sub get_value_s()
    Dim wks As Worksheet
    Set wks = Worksheets(2)

    Dim linha As Integer, linha2 As Integer

    linha = wks.Range("A3").End(xlDown).Row
    linha2 = linha + get_value(linha, wks)

    wks.Rows(linha2).Insert Shift:=xlDown
End Sub

并确保在调用get_value_s之前设置了X

就像Portland Runner的建议一样,您可以这样做。

Function get_value()
    Dim area2 As Range

    Set area2 = Range(Cells(8, 2), Cells(linha, 2))
    f = area2.Count
    get_value = x - f
End Function

Sub get_value_s()
    Worksheets(2).Activate

    Range("A3").Select
    Selection.End(xlDown).Select
    linha = Selection.Row
    linha2 = linha + get_value()

    Rows(linha2).Select
    Selection.Insert Shift:=xlDown
End Sub

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM