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

时间:2014-10-13 04:05:21

标签: vba excel-vba excel

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

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

P.S。我已将s设置为全局整数。 (Public s As Integer)。

非常感谢!

2 个答案:

答案 0 :(得分:1)

如果没有更多代码,很难知道错误是什么,因为您有其他几个全局变量,我们无法看到它们是如何设置的。我的猜测是你在调用变量之前没有设置变量。例如,您确定在get_value()get_value_s()之前调用了x吗?您调用时linha是正确的值吗?

我建议不要使用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

并确保在致电X之前设置get_value_s

答案 1 :(得分:0)

就像波特兰亚军建议的那样,你可以这样做。

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