请问,我正在尝试将变量的值从一个子变量转换为另一个子变量,但不幸的是我没有得到它。请遵循以下代码:
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)。
非常感谢!
答案 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